用httpclient发soap请求时,怎么去掉返回报文体中的MIME_Boundary
我用httpclient发送soap请求,代码大致如下:
HttpMethod httpMethod = new PostMethod(sRequestUrl); httpMethod.setRequestHeader("Content-Type", contentType); httpMethod.setRequestHeader("Connection", "close"); HttpClient client = getHttpClient(); int status = client.executeMethod(httpMethod); byte[] repbody = httpMethod.getResponseBody();
能正常拿到response, 但 返回的body是这样的:
--MIME_Boundary
Content-ID: 0.urn:uuid:3AF7F988BAC52442C81313043948249@apache.org
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope > //此处是业务数据 </soapenv:Envelope >
--MIME_Boundary--
我想问一下,httpclient里有没有什么的方式能去掉 返回body里边的 MIME_Boundary(上边红色的部分)。
用soapUI工具发同样的请求,在界面上,response里是只能看到 <soapenv:Envelope >...</soapenv:Envelope >这部分数据的,但当用wireshark抓包工具看的时候,其实soapUI收到的返回结果里也是包含有 MIME_Boundary的,soapUI在收到response的时候应该是自己把这部分去掉了。
不会是用截字符串的方式吧?我用的httpclient版本是 3.1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
算了,实在不行我用正则直接去获取
<soapenv:Envelope >...</soapenv:Envelope >
jsoup去获取一下
soapenv:Envelope的text部分啊,抓取我向来是httpClient+jsoup做的,非html标签是能获取到的,这个你也试试就是了。
在 body 里就没办法了, httpclient 控制不了的,你只能自己写程序去把它们过滤掉
那你这个内容就是服务器端硬写到body里的吧,不是 http header 里的信息
是的呢,直接是body里边的,还不是header里的,header里也有类似的信息: boundary=MIME_Boundary; start="0.urn:uuid:93DCB851D7BB6189AB1313050086534
引用来自“红薯”的答案
用 getResponseBodyAsStream 这方法去读取回应的内容
用 getResponseBodyAsStream 这方法去读取回应的内容