我正在使用org.apache.http api编写一个使用SOAP操作的硬编码HTTP Post请求.
我的问题是没有找到一种方法来添加请求正文(在我的例子中是SOAP操作).
我会很高兴有一些指导.
我的问题是没有找到一种方法来添加请求正文(在我的例子中是SOAP操作).
我会很高兴有一些指导.
import java.net.URI; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.RequestWrapper; import org.apache.http.protocol.HTTP; public class HTTPRequest { @SuppressWarnings("unused") public HTTPRequest() { try { HttpClient httpclient = new DefaultHttpClient(); String body="DataDataData"; String bodyLength=new Integer(body.length()).toString(); System.out.println(bodyLength); // StringEntity stringEntity=new StringEntity(body); URI uri=new URI("SOMEURL?Param1=1234&Param2=abcd"); HttpPost httpPost = new HttpPost(uri); httpPost.addHeader("Test","Test_Value"); // httpPost.setEntity(stringEntity); StringEntity entity = new StringEntity(body,"text/xml",HTTP.DEFAULT_CONTENT_CHARSET); httpPost.setEntity(entity); RequestWrapper requestWrapper=new RequestWrapper(httpPost); requestWrapper.setMethod("POST"); requestWrapper.setHeader("LuckyNumber","77"); requestWrapper.removeHeaders("Host"); requestWrapper.setHeader("Host","GOD_IS_A_DJ"); // requestWrapper.setHeader("Content-Length",bodyLength); HttpResponse response = httpclient.execute(requestWrapper); } catch (Exception e) { e.printstacktrace(); } } }
解决方法
soapAction必须作为http-header参数传递 – 当使用它时,它不是http-body / payload的一部分.
看看这里一个例子与apache httpclient:http://svn.apache.org/repos/asf/httpcomponents/oac.hc3x/trunk/src/examples/PostSOAP.java
原文地址:https://www.jb51.cc/java/126782.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。