HttpClient 发布 xml 序列化字节数组
HttpClient posting xml serialized byte array
我部署了一个用 VS2010 编写的 android 应用程序,我正在将其移植到 VS2012。我正在尝试使用 HttpClient 与我的 WCF Restful 网络服务进行通信。 Web 服务是 XML Web 服务。我使用 XmlSerializer 将模型对象序列化为字节数组。
在 VS2010 中,我成功地使用了 WebClient,如下所示:
using (WebClient myWebClient = new WebClient())
{
myWebClient.Headers.Add("Content-Type", "application/xml");
myWebClient.UploadData(uri, postBytes);
}
但是我不知道如何使用 HttpClient post 相同的字节数组。这是我目前所拥有的:
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;
网络服务方法具有这些属性:
[WebInvoke(Method="POST", RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate = "/Order.Xml/Process")]
[XmlSerializerFormat]
响应不过是 400 Bad Request。 posted 内容的格式似乎不正确。但我不知道如何让它与现有的网络服务一起工作。它与 WebClient 一起正常工作。
您将 "application/xml" 添加到请求的 'Accept' header 而不是 'Content-Type'。
请尝试以下操作:
content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
我部署了一个用 VS2010 编写的 android 应用程序,我正在将其移植到 VS2012。我正在尝试使用 HttpClient 与我的 WCF Restful 网络服务进行通信。 Web 服务是 XML Web 服务。我使用 XmlSerializer 将模型对象序列化为字节数组。
在 VS2010 中,我成功地使用了 WebClient,如下所示:
using (WebClient myWebClient = new WebClient())
{
myWebClient.Headers.Add("Content-Type", "application/xml");
myWebClient.UploadData(uri, postBytes);
}
但是我不知道如何使用 HttpClient post 相同的字节数组。这是我目前所拥有的:
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;
网络服务方法具有这些属性:
[WebInvoke(Method="POST", RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate = "/Order.Xml/Process")]
[XmlSerializerFormat]
响应不过是 400 Bad Request。 posted 内容的格式似乎不正确。但我不知道如何让它与现有的网络服务一起工作。它与 WebClient 一起正常工作。
您将 "application/xml" 添加到请求的 'Accept' header 而不是 'Content-Type'。
请尝试以下操作:
content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");