【发布时间】:2015-09-08 06:26:36
【问题描述】:
已经在第二天尝试实现多部分发布请求,但到目前为止我失败了。
任务:向服务器发送 1 或 2 张图片。
请告诉我如何在 Windows Phone 8.1 (WinRT) 中执行此操作。已经在互联网上尝试了大量的链接,但没有任何反应。
附言在API服务器的描述中写到必须按照以下格式提交请求。
{
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"type": "file"
}
}
}
}
是的,当然。这是我的代码。我搜索了互联网并最终尝试实现这一点。有趣的是,它工作并将数据发送到服务器。只有北返回错误:“数据错误”,所以我以错误的格式发送出去。我认为这是因为不是 json 创建的结构,我在上面写过。
public async static Task<bool> UploadFiles(StorageFile file)
{
var streamData = await file.OpenReadAsync();
var bytes = new byte[streamData.Size];
using (var dataReader = new DataReader(streamData))
{
await dataReader.LoadAsync((uint)streamData.Size);
dataReader.ReadBytes(bytes);
}
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
System.Net.Http.MultipartFormDataContent form = new System.Net.Http.MultipartFormDataContent();
form.Add(new System.Net.Http.StringContent(UserLogin), "username");
form.Add(new System.Net.Http.StringContent(UserPassword), "password");
form.Add(new System.Net.Http.ByteArrayContent(bytes, 0, bytes.Length), "files", "items");
form.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data");
System.Net.Http.HttpResponseMessage response = await httpClient.PostAsync(UploadFilesURI, form);
response.EnsureSuccessStatusCode();
httpClient.Dispose();
string sd = response.Content.ReadAsStringAsync().Result;
return true;
}
很抱歉这种风格的代码。还没有完全弄清楚如何在帖子中正确插入它
【问题讨论】:
-
已经在互联网上尝试了大量的链接,但是什么都没有发生。什么都没有发生是什么意思?能否请您发布实际代码,否则我们将无法提供帮助。
-
是的,当然。我附上了下面的代码。对不起
-
所以问题是你的 JSON 格式不正确?你找不到合适的结构吗?
-
如果我理解正确的话,通过API判断你想要将文件发送到服务器并且在API的描述中是查询结构。因此,我得出结论,我必须插入 multipart 和 json。可能是。
-
这是来自 API 1drv.ms/1KBkitP的查询(顶部)和响应(底部)的屏幕截图
标签: c# windows-phone-8 windows-runtime windows-phone-8.1 winrt-xaml