0

我目前正在使用 Windows Compact Framework 3.5 与移动设备通信。发送到设备的消息是这样构建的,

HttpResponseMessage result;
var response = Encoding.UTF8.GetBytes("<?xml version=\"1.0\" encoding=\"windows-1252\"?><message type=\"response\"><header><datetime>2013-04-03T09:49:35</datetime><sender version=\"1.1.4.1138\"><userid>Connect Server</userid></sender><commandlist><module>ADMIN</module><command1>VALIDATE</command1></commandlist><result type=\"ok\"/></header></message>");

result = Request.CreateResponse(HttpStatusCode.OK, response);

设备然后检索消息,然后使用

Encoding.UTF8.GetString(responseContent);

解码后的消息是:

&lt;base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/"&gt;PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUyIj8+PG1lc3NhZ2UgdHlwZT0icmVzcG9uc2UiPjxoZWFkZXI+PGRhdGV0aW1lPjIwMTMtMDQtMDNUMDk6NDk6MzU8L2RhdGV0aW1lPjxzZW5kZXIgdmVyc2lvbj0iMS4xLjQuMTEzOCI+PHVzZXJpZD5Db25uZWN0IFNlcnZlcjwvdXNlcmlkPjwvc2VuZGVyPjxjb21tYW5kbGlzdD48bW9kdWxlPkFETUlOPC9tb2R1bGU+PGNvbW1hbmQxPlZBTElEQVRFPC9jb21tYW5kMT48L2NvbW1hbmRsaXN0PjxyZXN1bHQgdHlwZT0ib2siLz48L2hlYWRlcj48L21lc3NhZ2U+&lt;/base64Binary&gt;

在发送之前尝试在服务器上解码消息,这很好。不确定可能出了什么问题。

任何帮助将不胜感激。

4

2 回答 2

2

Request.CreateResponse() 使用 ObjectContent。对于这种情况,您不希望这样。您应该使用 StringContent 或 StreamContent 来返回 XML。有关详细信息,请参阅此问题https://stackoverflow.com/a/15372410/6819

于 2013-04-05T11:22:16.397 回答
0

您正在将 XML 编码为二进制文件。然后,您将返回一个字节数组。然后您的客户端在标头中请求 XML Accept: application/xml。Web API 将二进制文件序列化为 XML。这就是你所看到的。

只需将 XML 作为字符串返回,您应该没有问题,除非您已经尝试过?

有关类似问题,请参见此处

于 2013-04-05T10:35:17.303 回答