我有这个代码示例,它是作为另一个问题的答案发布的(使用 C# 通过 HTTP POST 发送文件 https://stackoverflow.com/questions/1131425/send-a-file-via-http-post-with-c-sharp)。除了一个问题之外,它工作正常。它用双引号包围 HTTP 标头中的边界:
多部分/表单数据;边界=“04982073-787d-414b-a0d2-8e8a1137e145”
这阻碍了我尝试调用的网络服务。浏览器没有这些双引号。我需要某种方法来告诉 .NET 让它们离开。
private System.IO.Stream Upload(string actionUrl, string paramString, Stream paramFileStream, byte [] paramFileBytes)
{
HttpContent stringContent = new StringContent(paramString);
HttpContent fileStreamContent = new StreamContent(paramFileStream);
HttpContent bytesContent = new ByteArrayContent(paramFileBytes);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(stringContent, "param1", "param1");
formData.Add(fileStreamContent, "file1", "file1");
formData.Add(bytesContent, "file2", "file2");
var response = client.PostAsync(actionUrl, formData).Result;
if (!response.IsSuccessStatusCode)
{
return null;
}
return response.Content.ReadAsStreamAsync().Result;
}
}
您可以使用以下代码从边界中删除引号:
var boundary = formData.Headers.ContentType.Parameters.First(o => o.Name == "boundary");
boundary.Value = boundary.Value.Replace("\"", String.Empty);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)