我有一个Lotus Notes java代理,我在其中收到一个XML,解析它并以XML作为内容发回一个响应:
pw.println("Content-Type: text/xml");
pw.println("charset: UTF-8");
pw.print("\r\n");
pw.println("<cXML payloadID=\"" + payload + "\" xml:lang=\"en\"" + " timestamp=\"" + timestamp + "\" >" + "<Response><Status code=\"200\" text=\"OK\" /></Response></cXML>" );
我检查了响应内容的样子,我看到了:
<cXML payloadID="1449750433..595@" xml:lang="en" timestamp="2015-12-10T12:27:13"><Response><Status code="200" text="OK"/></Response></cXML>
但如果我检查wireshark,那么我看到了:
为什么我会收到这个无法识别的文字。
B接收到我的响应的接收主机是一个.net应用程序,这个.net应用程序收到此错误:
任何可以帮助我的人。
谢谢
将代码更改为:
pw.println("Content-Type: text/xml; charset=utf-8\r\n");
pw.println("<cXML payloadID=\"" + payload + "\" xml:lang=\"en\"" + " timestamp=\"" + timestamp + "\" >" + "<Response><Status code=\"200\" text=\"OK\" /></Response></cXML>" );
答案 0 :(得分:3)
HTTP标头需要CR + LF(Windows样式)行结尾。尝试手动输入行结尾,例如:
pw.print("Content-Type: text/xml\r\n");
然后用空行标记标题的结尾:
pw.print("\r\n");