Has*_*nov 17 c# .net-core uwp asp.net-core asp.net-core-webapi
你好可爱的Stack Overflow人.从昨天起我就遇到了问题,从那时起我一直在浏览.我有一个UWP客户端和ASP.NET核心Web Api.我只想向我的网络api发送一个流,但事实上这比我想象的更难.
我有一个课,我只有一个属性.Stream您可以在下面看到该属性:
public class UploadData
{
public Stream InputData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
那么这是我的Web Api中的代码:
// POST api/values
[HttpPost]
public string Post(UploadData data)
{
return "test";
}
Run Code Online (Sandbox Code Playgroud)
我试图从体内读取流但结果是一样的.我可以点击post方法UploadData不是null但我InputData总是null.
这是我的UWP的邮寄请求代码.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的内容类型,它们似乎都不起作用,我不知道为什么.我真的很感激所有的帮助.
Nko*_*osi 14
在客户端发送流内容而不是整个模型.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:不要将.Result阻塞调用与异步调用混合使用.那些往往导致死锁.
在服务器更新操作上
// POST api/values
[HttpPost]
public IActionResult Post() {
var stream = Request.Body;
return Ok("test");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9350 次 |
| 最近记录: |