我编写了一个基于此代码here
发送SOAP请求的java swing应用程序总的来说它工作得很好,但是我在soap:BODY中解析中文字符时刚刚开始测试它,这会导致我从Web服务器得到400响应的错误:
s.AddParameter("xml", "班");
使用wireshark我最终将其跟踪到解析这些中文字符时构造的内容长度值(我假设任何其他多字节(?)字符)。
我已经通过简单地将代码更改为覆盖内容长度生成来证明这一点:
out.println("Content-Length: " + String.valueOf(postData.length()+2));
显然这不是一个解决方案,因为它只证明了我发送单个字符的非常孤立的测试用例,但我认为问题是首先计算postData.length()
然后发布数据我的班字符是然后转换为\ 347 \ 217 \ 255,抛出内容长度并导致请求失败。
所以我要求就如何解决这个问题提出建议?
我是否可以先对值进行编码,获取内容长度并抑制帖子上的编码?我不确定实际编码它是什么;我假设PrintWriter?
问候。