开发者社区> 问答> 正文

用httpclient发soap请求时,怎么去掉返回报文体中的MIME_Boun?400报错

用httpclient发soap请求时,怎么去掉返回报文体中的MIME_Boundary? 400 报错

我用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

展开
收起
爱吃鱼的程序员 2020-06-05 12:48:35 674 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    用 getResponseBodyAsStream 这方法去读取回应的内容
    ######

    引用来自“红薯”的答案

    用 getResponseBodyAsStream 这方法去读取回应的内容
    老大,我用你说的方法读取回应,结果还是一样啊,还是包含 MIME_Boundary
    ###### @红薯 : 是的呢,直接是body里边的,还不是header里的,header里也有类似的信息: boundary=MIME_Boundary; start="0.urn:uuid:93DCB851D7BB6189AB1313050086534######那你这个内容就是服务器端硬写到body里的吧,不是 http header 里的信息######在 body 里就没办法了, httpclient 控制不了的,你只能自己写程序去把它们过滤掉
    ######jsoup去获取一下 soapenv:Envelope的text部分啊,抓取我向来是httpClient+jsoup做的,非html标签是能获取到的,这个你也试试就是了。######算了,实在不行我用正则直接去获取  <soapenv:Envelope >...</soapenv:Envelope >
    2020-06-05 12:48:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载