HttpClient发布xml序列化字节数组

时间:2016-04-05 18:37:08

标签: xamarin xamarin.android androidhttpclient

我有一个用VS2010编写的部署的Android应用程序,我正在移植到VS2012。我正在尝试使用HttpClient与我的WCF Restful webservice进行通信。 Web服务是XML Web服务。我使用XmlSerializer将模型对象序列化为字节数组。

在VS2010中,我成功使用了像这样的WebClient:

using (WebClient myWebClient = new WebClient())  
{
    myWebClient.Headers.Add("Content-Type", "application/xml");
    myWebClient.UploadData(uri, postBytes);
}

但是我无法弄清楚如何使用HttpClient发布相同的字节数组。以下是我到目前为止的情况:

var client = new HttpClient()
client.DefaultRequestHeaders.Accept
     .Add(new MediaTypeWithQualityHeaderValue("application/xml"));

var content = new ByteArrayContent(postBytes);
Task<HttpResponseMessage> task = client.PostAsync(uri,content);
task.Wait();
HttpResponseMessage message = task.Result;

webservice方法具有以下属性:

[WebInvoke(Method="POST", RequestFormat=WebMessageFormat.Xml,
                          ResponseFormat=WebMessageFormat.Xml,
                          UriTemplate = "/Order.Xml/Process")]
[XmlSerializerFormat]

响应只是400 Bad Request。似乎发布的内容格式不正确。但我不知道如何使它与现有的Web服务一起工作。它与WebClient一起正常工作。

1 个答案:

答案 0 :(得分:1)

您正在添加&#34; application / xml&#34;接受&#39;接受&#39;请求的标题不是&#39;内容类型&#39;。

请尝试以下方法:

content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");