我正在嘗試與不支持用于上傳檔案的 multipart/form-data 的 API 互動。
我已經能夠讓它與較舊的 WebClient 一起使用,但由于它已被棄用,我想使用較新的 HttpClient。
我為 WebClient 提供的與此端點一起使用的代碼如下所示:
using (WebClient client = new WebClient())
{
byte[] file = File.ReadAllBytes(filePath);
client.Headers.Add("Authorization", apiKey);
client.Headers.Add("Content-Type", "application/pdf");
byte[] rawResponse = client.UploadData(uploadURI.ToString(), file);
string response = System.Text.Encoding.ASCII.GetString(rawResponse);
JsonDocument doc = JsonDocument.Parse(response);
return doc.RootElement.GetProperty("documentId").ToString();
}
我還沒有找到一種方法來讓等效的上傳與 HttpClient 一起使用,因為它似乎總是使用多部分。
uj5u.com熱心網友回復:
我認為它看起來像這樣
using var client = new HttpClient();
var file = File.ReadAllBytes(filePath);
var content = new ByteArrayContent(file);
content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
var result = client.PostAsync(uploadURI.ToString(), content).Result;
result.EnsureSuccessStatusCode();
var response = await result.Content.ReadAsStringAsync();
var doc = JsonDocument.Parse(response);
return doc.RootElement.GetProperty("documentId").ToString();
uj5u.com熱心網友回復:
有什么反對將 HttpClient 的PostAsync方法與ByteArrayContent結合使用?
byte[] fileData = ...;
var payload = new ByteArrayContent(fileData);
payload.Headers.Add("Content-Type", "application/pdf");
myHttpClient.PostAsync(uploadURI, payload);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/473353.html
標籤:C# 。网 httpclient 多部分数据 网络客户端
