HTML通过SOAP方式调用wsdl接口
直接上代码
package com.d.study.webtest.test;
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.util.EntityUtils;
public class Httptest {
public static void main(String[] args) throws Exception{
HttpPost post = null;
HttpClient hc = new DefaultHttpClient();
//wsdl的url
post = new HttpPost("http://xxx/xxx/xxx/xxx/xxx/xxxWebService?wsdl");
post.setHeader("content-type","text/xml;charset=utf-8");
//targetNamespace + "/" + 方法名
post.setHeader("SOAPAction","http://xxx.xxx/xxx/xxxService");
String data = "你需要传的参数";
String datacopy ="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
datacopy +="<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
datacopy +="xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ";
datacopy +="xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> ";
datacopy +="<soap:Body> ";
datacopy +="<"+方法名+" xmlns=\""+targetNamespace+"\"> ";
//有多个参数可以写多条,或者写个循环
datacopy +="<"+参数名+"><![CDATA["+data+"]]></"+参数名+"> </"+方法名+"> </soap:Body> </soap:Envelope>";
StringEntity entity = new StringEntity(datacopy,"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("text/xml");
post.setEntity(entity);
HttpResponse result = hc.execute(post);
if(result.getStatusLine().getStatusCode()==200) {
//接口返回值
String str = EntityUtils.toString(result.getEntity());
System.out.println(str);
}
}
}