[英]Post files from ASP.NET Core web api to another ASP.NET Core web api
[英]Post Stream in ASP.NET Core Web Api
你好可愛的Stack Overflow人。 從昨天起我就遇到了問題,從那時起我一直在瀏覽。 我有一個UWP客戶端和ASP.NET核心Web Api。 我只想向我的網絡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
不為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;
}
}
我嘗試了各種各樣的內容類型,它們似乎都不起作用,我不知道為什么。 我真的很感激所有的幫助。
在客戶端發送流內容而不是整個模型。
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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.