你好,可爱的Stack Overflow的人们。从昨天开始,我遇到了一个问题,从那时起,我就一直在浏览。我有一个UWP客户端和ASP.NET核心网络应用程序接口。我只想向我的web api发送一个流,但这确实比我想象的更难。
我有一个只有一个属性的类。如下所示,Stream
属性:
public class UploadData
{
public Stream InputData { get; set; }
}
下面是我的Web Api中的代码:
// POST api/values
[HttpPost]
public string Post(UploadData data)
{
return "test";
}
我试着从正文中读取流,但结果是一样的。我可以命中post方法,UploadData
不为空,但我的InputData
始终为null
。
这是我的UWP的post请求代码。
private async void PostStreamButton_OnClick(object sender, RoutedEventArgs e)
{
using (var client = new HttpClient())
{
var dummyBuffer = new UnicodeEncoding().GetBytes("this is dummy stream");
var dummyStream = new MemoryStream(dummyBuffer).AsRandomAccessStream().AsStream();
var requestContent = new MultipartFormDataContent();
var inputData = new StreamContent(dummyStream);
inputData.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
requestContent.Add(inputData, "inputData");
HttpResponseMessage response = client.PostAsync("url", inputData).Result;
}
}
我尝试了各种内容类型,但似乎都不起作用,我也不知道为什么。我真的很感激所有的帮助。
发布于 2017-02-16 22:58:10
在客户端,发送流内容,而不是整个模型。
private async void PostStreamButton_OnClick(object sender, RoutedEventArgs e) {
using (var client = new HttpClient()) {
var dummyBuffer = new UnicodeEncoding().GetBytes("this is dummy stream");
var dummyStream = new MemoryStream(dummyBuffer).AsRandomAccessStream().AsStream();
var inputData = new StreamContent(dummyStream);
var response = await client.PostAsync("url", inputData);
}
}
注意:不要将.Result
阻塞调用与异步调用混为一谈。这些往往会导致死锁。
在服务器更新操作时
// POST api/values
[HttpPost]
public IActionResult Post() {
var stream = Request.Body;
return Ok("test");
}
https://stackoverflow.com/questions/42271947
复制相似问题