C# 如何在HttpClient SendRequestAsync中发送映像
我正在使用Windows.Web.Http而不是System,我正在尝试发送图像 我的示例代码:C# 如何在HttpClient SendRequestAsync中发送映像,c#,windows,multipartform-data,uwp,C#,Windows,Multipartform Data,Uwp,我正在使用Windows.Web.Http而不是System,我正在尝试发送图像 我的示例代码: Dictionary<string, object> requestDictionary; HttpClient httpClient = new HttpClient(); HttpRequestMessage re = new HttpRequestMessage(); HttpResponseMessage response; re.Meth
Dictionary<string, object> requestDictionary;
HttpClient httpClient = new HttpClient();
HttpRequestMessage re = new HttpRequestMessage();
HttpResponseMessage response;
re.Method = HttpMethod.Post;
re.RequestUri = url;
string content_type = "application/json";
string req_data = JsonConvert.SerializeObject(requestDictionary);
re.Content = new HttpStringContent(req_data, UnicodeEncoding.Utf8, content_type);
response = await httpClient.SendRequestAsync(re);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
httpClient.Dispose();
httpClient=null;
请有人帮我实现这一点。使用.Net 4.5(或从NuGet添加Microsoft.Net.Http包)有一种更简单的方法:
private string Upload(string actionUrl, string paramString, byte[] paramFileBytes)
{
HttpContent stringContent = new StringContent(paramString);
HttpContent bytesContent = new ByteArrayContent(paramFileBytes);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(stringContent, "paramter");
formData.Add(bytesContent, "image");
var response = client.PostAsync(actionUrl, formData).Result;
if (!response.IsSuccessStatusCode)
{
return null;
}
return response.Content.ReadAsStringAsync().Result;
}
}
如果您更喜欢使用流而不是字节数组,那么只需使用newstreamcontent()
而不是newbytearraycontent()
,就可以轻松做到这一点
private string Upload(string actionUrl, string paramString, byte[] paramFileBytes)
{
HttpContent stringContent = new StringContent(paramString);
HttpContent bytesContent = new ByteArrayContent(paramFileBytes);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(stringContent, "paramter");
formData.Add(bytesContent, "image");
var response = client.PostAsync(actionUrl, formData).Result;
if (!response.IsSuccessStatusCode)
{
return null;
}
return response.Content.ReadAsStringAsync().Result;
}
}