标签: uri

servicestack 在 uri 中传递正斜杠

我正在使用 servicestack 构建一个 Web API,通过网络提供一些旧数据。不幸的是,数据模式并不特别适合 ServiceStack.Ormlite 的标准使用。例如,没有主键,并且在一个表上(非唯一)键实际上可以包含任何字符。在我的示例数据库中,键内有“/”字符。

因此,当使用此路由“/api/objects/{objectCode}”从 Web api 请求资源时,如果所需的 objectCode 为 1/1,则路由应为“/api/objects/1/1”,但这会生成一个页面未发现异常。当我在以下路由“/api/objects/{objectCode}/subObjects”上请求资源时该怎么办

  1. 有谁知道我应该如何解决这个问题?我应该围绕这个问题进行设计还是我可以做些什么来允许它发生?

  2. 另外,理想情况下,我希望能够传递这些 objectCode 的数组,但我不能保证,objectCode 值中不会有 a ,因此分隔字符会出现在资源代码中,从而出现在 ServiceStack 的分隔符解析中,不是吗?

我已经搜索过线索,但只发现人们询问查询字符串中的编码而不是 URI 本身。

uri escaping servicestack

0
推荐指数
1
解决办法
893
查看次数

C# 在构建中有声音文件

我需要为学校制作一款游戏。

我添加了一些音效和音乐。

我在类中有 .wav 的路径,它会播放它们,但只有当我从项目中的 bin 地图启动游戏时。我发现这些文件不包含在构建中。我开始寻找它,但找不到正确的方法。

我有:

MediaPlayer _musicPlayer = new MediaPlayer();
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
Uri uri = new Uri(@"pack://application:,,,/{Assembly name};component/Resources/Sounds/Music/Main_theme_-_Thiago_Adamo.wav")
_musicPlayer.Open(uri);
_musicPlayer.Play();
Run Code Online (Sandbox Code Playgroud)

然而这不起作用。如果我添加一个消息框:

uri.IsFile.ToString()
Run Code Online (Sandbox Code Playgroud)

显示为假。

在文件上我将属性设置为:

构建操作:资源

复制到输出目录:始终复制

我希望有一个人可以帮助我。

c# uri build pack-uri

0
推荐指数
1
解决办法
1149
查看次数

删除给定存储访问框架 uri 并使用内容解析器的文件失败

我正在尝试使用 删除文件Storage Access Framework。以下是代码的一些元素:

public class MyActivity extends AppCompatActivity
{
    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem)
    {
    int n_requestCode;

        switch(menuItem.getItemId())
        {
            [...]
            case R.id.delete_file:
                n_requestCode = 108;
                startSAFActionOpenDocumentTree(n_requestCode);
                break;
            [...]
        }
        [...]
    }

    public void startSAFActionOpenDocumentTree(int n_requestCode)
    {
    Intent intent;
    
        intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);  
        startActivityForResult(intent, n_requestCode);
    }

    private void startSAFActionOpenDocument(int n_requestCode)
    {
    Intent intent = null;

        intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");
        startActivityForResult(intent, n_requestCode);
    }

    protected void onActivityResult(int n_requestCode, int n_resultCode, Intent data)
    {
    android.net.Uri uri;
    ContentResolver contentResolver;

        if(n_requestCode …
Run Code Online (Sandbox Code Playgroud)

java android uri delete-file

0
推荐指数
1
解决办法
688
查看次数

解码 Uri.https 时出错,“未处理的异常:FormatException:无效字符(字符 27)”

我正在尝试构建天气应用程序。我搜索了天气 API,因为我需要每小时和每周的天气预报。我找到了这个网站https://www.visualcrossing.com/。我想像这样解码 HTTP 链接(下面的代码):

class DataServiceOneCall {
  Future<WeatherResponseOnecall> getWeatherOneCall(String city) async {
    //https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/Olszowice?unitGroup=metric&key=QVDLJFCCQRM5296M7J975FP2W&contentType=json

    final queryParameters = {
      'q': city,
      'unitGroup': 'metric',
      'key': 'QVDLJFCCQRM5296M7J975FP2W',
      'contentType': 'json',
    };

    final uri = Uri.https(
        'weather.visualcrossing.com/VisualCrossingWebServices',
        '/rest/services/timeline,',
        queryParameters);

    final response_onecall = await http.get(uri);

    print(response_onecall.body);

    final json = jsonDecode(response_onecall.body);
    return WeatherResponseOnecall.fromJson(json);
  }
}
Run Code Online (Sandbox Code Playgroud)

我遇到了这样的错误。

E/flutter (11332): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: FormatException: Invalid character (at character 27)
E/flutter (11332): weather.visualcrossing.com/VisualCrossingWebServices
E/flutter (11332):                           ^
E/flutter (11332):
E/flutter (11332): #0      _Uri._fail (dart:core/uri.dart:1754:5)
E/flutter (11332): #1      _Uri._normalizeRegName (dart:core/uri.dart:2252:9)
E/flutter …
Run Code Online (Sandbox Code Playgroud)

uri dart flutter

0
推荐指数
1
解决办法
5776
查看次数

如何将byte []转换为Uri图像

我通过使用以下代码保存图像uri

 public void insert (Uri image) throws SQLiteException {
        SQLiteDatabase database = mdb.getWritableDatabase();
        ContentValues cv = new ContentValues();
        try {
            InputStream iStream = getContentResolver().openInputStream(image);
            byte[] inputData = com.example.tony.monthlyexpenses.Utils.getBytes(iStream);
            cv.put(MyDatabaseHelper.KEY_IMAGE,inputData);
        }catch(IOException ioe)
        {
            Log.e("A", "<saveImageInDB> Error : " + ioe.getLocalizedMessage());
        }
        database.insert(MyDatabaseHelper.TABLE_EXPENSES, null, cv);
        database.close();
    }
Run Code Online (Sandbox Code Playgroud)

实用程序

    public static Bitmap getImage(byte[] image) {
            return BitmapFactory.decodeByteArray(image, 0, image.length);
        }

 public static byte[] getBytes(InputStream inputStream) throws IOException {
        ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
        int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        int …
Run Code Online (Sandbox Code Playgroud)

sqlite android uri image

-1
推荐指数
1
解决办法
5484
查看次数

编码的撇号将转换为%27

我想访问以下链接:

http://localhost:8080/lookups/TagGroup.html?
    is_guideline_tag=true&field_name=%3C%3Ealert('1')%3E&tag_group_id=38
Run Code Online (Sandbox Code Playgroud)

但是当我将其粘贴到浏览器(Chrome 63.0.3239.84)中时,它变成:

http://localhost:8080/lookups/TagGroup.html?
    is_guideline_tag=true&field_name=%3C%3Ealert(%271%27)%3E&tag_group_id=38
Run Code Online (Sandbox Code Playgroud)

因此,单引号替换为%27,我无法访问链接。

我还要提及的是,我上面的链接中的field_name是这样获得的:encodeURIComponent("<>alert('1')>")应该返回%3C%3Ealert('1')%3E

有任何想法吗?

javascript encoding uri google-chrome

-1
推荐指数
1
解决办法
1498
查看次数

_data列在FileProvider uri上不可用

我正在使用FileProvider模式来为文件创建content:// uri,

FileProvider.getUriForFile(this, "com.myapp.provider", file) 
Run Code Online (Sandbox Code Playgroud)

功能。我有清单,provider_paths和所有设置的标准方式,它创建了一个uri content://com.myapp.provider/external_files/music/mysong.mp3

我的问题是,如果我尝试在另一个应用程序中获取真实文件路径,则由于该_data列不存在而无法正常工作(具体来说,日志中的错误是E/CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 0 columns.)。为了获取真实路径,我使用了非常标准的功能

final String column = MediaStore.Files.FileColumns.DATA;
final String[] projection = { column  };
try {
    cursor = context.getContentResolver().query(uri, projection, null, null, null);
    if (cursor != null && cursor.moveToFirst()) {
        final int column_index = cursor.getColumnIndexOrThrow(column);
        return cursor.getString(column_index);
    }
} finally {
    if (cursor != null)
        cursor.close();
}
Run Code Online (Sandbox Code Playgroud)

如果我使用其他应用程序共享同一文件,则会生成一个类似uri的uri content://com.otherapp.provider/external_files/music/mysong.mp3,我已经可以从中检索真实的文件路径。有什么想法可以做,以确保我的应用正确地将给定的uri插入到ContentResolver中?contentResolver.insert(...)不允许使用手动功能。我尝试了不同版本的provider_paths.xml,并为给定的uri授予了所有可能的读/写权限,但是我永远无法检索真实路径。

由我生成的uri本身可以正常工作,因为我可以读取文件或播放歌曲,我的问题是我无法检索所需的真实文件路径。 …

android uri file path android-contentresolver

-1
推荐指数
1
解决办法
1805
查看次数