0

我的 .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'.

我究竟做错了什么 ??我正在尝试找到一个合适的指南,所有指南都在谈论web api 上传,而不是从应用程序上传到web api..

4

1 回答 1

3

去获取 WebAPIContrib,它有一个CompressedContent

有了它,你可以做到,

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

压缩会神奇地发生。

于 2013-09-11T13:59:18.050 回答