C#.net 4.0将文件上传到.asp Web API

时间:2013-09-11 13:52:05

标签: c# rest .net-4.0 asp.net-web-api

我的.net 4.0类库发送HttpRequestMessage并从.asp Web API(REST)接收HttpResponseMessage。

当我发送一个小类时,我使用JSON将其解析为字符串,然后我发送字符串:

request = new HttpRequestMessage();
request.RequestUri = new Uri(myRestAPI);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Method = method;
if (method != HttpMethod.Get)
   request.Content = new StringContent(content, Encoding.UTF8, mthv);

接下来,使用HttpClient发送它:

using (HttpResponseMessage httpResponse = _client.SendAsync(request).Result)
{..}

这可以罚款 现在,我的班级变得更大了,我怎么发送呢? 我做的是拉链并发送为ByteArrayContent。

request = new HttpRequestMessage();
request.RequestUri = new Uri(url);
request.Method = method;
if (method != HttpMethod.Get)
   request.Content = new ByteArrayContent(content);
   request.Content.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data");

以同样的方式发送。

但是现在服务器确实回复了我的错误:

No MediaTypeFormatter is available to read an object of type 'Byte[]' from content with media type 'multipart/form-data'.

我做错了什么?我正在尝试找到一个正确的指南,所有指南都在谈论上传 FROM 网络API,而不是从应用程序上传到网络API ..

1 个答案:

答案 0 :(得分:3)

Go get WebAPIContrib,它有一个CompressedContent

有了它,你可以做到,

request.Content = new CompressedContent(new StringContent(content, Encoding.UTF8, mthv),"gzip");

压缩只会神奇地发生。