我正在使用 servicestack 构建一个 Web API,通过网络提供一些旧数据。不幸的是,数据模式并不特别适合 ServiceStack.Ormlite 的标准使用。例如,没有主键,并且在一个表上(非唯一)键实际上可以包含任何字符。在我的示例数据库中,键内有“/”字符。
因此,当使用此路由“/api/objects/{objectCode}”从 Web api 请求资源时,如果所需的 objectCode 为 1/1,则路由应为“/api/objects/1/1”,但这会生成一个页面未发现异常。当我在以下路由“/api/objects/{objectCode}/subObjects”上请求资源时该怎么办
有谁知道我应该如何解决这个问题?我应该围绕这个问题进行设计还是我可以做些什么来允许它发生?
另外,理想情况下,我希望能够传递这些 objectCode 的数组,但我不能保证,objectCode 值中不会有 a ,因此分隔字符会出现在资源代码中,从而出现在 ServiceStack 的分隔符解析中,不是吗?
我已经搜索过线索,但只发现人们询问查询字符串中的编码而不是 URI 本身。
我需要为学校制作一款游戏。
我添加了一些音效和音乐。
我在类中有 .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)
显示为假。
在文件上我将属性设置为:
构建操作:资源
复制到输出目录:始终复制
我希望有一个人可以帮助我。
我正在尝试使用 删除文件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) 我正在尝试构建天气应用程序。我搜索了天气 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
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) 我想访问以下链接:
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
有任何想法吗?
我正在使用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本身可以正常工作,因为我可以读取文件或播放歌曲,我的问题是我无法检索所需的真实文件路径。 …