在我的ODataWebService中,有一个名为
Ware
. 这
器皿
具有类型的属性
Image
打电话
Picture
. 当我想在UWP应用程序中使用
HttpClient
我只是打电话
http://localhost:8797/Data/Ware(2)/Picture
. 代码如下:
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri(DataServiceAddress + "Data/");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Clear();
using (HttpResponseMessage message = await client.GetAsync(url))
{
message.EnsureSuccessStatusCode();
var content = (StreamContent)message.Content;
return await content.ReadAsByteArrayAsync();
}
}
这工作正常,并将图片作为数组的字节返回给我。
现在我想上传新的
相片
通过执行“PUT”。我试过下面的代码:
public static async Task PutImage(string url, byte[] image)
{
var handler = new HttpClientHandler { UseDefaultCredentials = true };
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri(DataServiceAddress + "Data/");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Clear();
using (var ms = new MemoryStream(image))
{
using (var message = await client.PutAsync(url, httpContent))
{
message.EnsureSuccessStatusCode();
}
}
}
}
那么当我打电话的时候
PutImage("Ware(2)/Picture", myFile.toByteArray())
,我正在
Bad Request
回答
有趣的是当我尝试
PUT
具有
邮递员
它工作得很好。正如你在下面的图片中看到的
204
结果和我的图片已成功更改。
Screenshot: Postman is successful sending the file with a 'PUT' verb to the odata server
谁能帮我一下吗?
这是Postman生成的代码:
PUT /Data/Ware(2)/Picture HTTP/1.1
Host: localhost:8797
Authorization: Basic QWRtaW46
Cache-Control: no-cache
Postman-Token: 37827f09-8841-7ccb-c462-d488ef4c4e9d
undefined
我做了很多谷歌搜索。但没有希望(