一. WSDL WebService的创建:
1.创建【Web Service Project】:
WebServices Framework要选JAX-WS:
2.写一个简单的测试用例:
package com.webservice;
public class WebService{
public String printData(String printerName){
String strRet = "Welcome to use WebService, " + printerName;
System.out.println("Print from WebService:" + strRet);
return strRet;
}
}
package com.webservice;
public class WebServiceTest{
public static void main(String[] args){
WebServiceService wssPrintData = new WebServiceService();
WebServiceDelegate wsdPrintData = wssPrintData.getWebServicePort();
System.out.println(wsdPrintData.printData("sun"));
}
}
Welcome to use WebService, sun
package com.httpclientforwsdl;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
public class WebServiceHttpClientTest{
public synchronized static String accessService(String wsdl,String ns,String method,Map params,String result)throws Exception{
//拼接参数
String param = getParam(params);
String soapResponseData = "";
//拼接SOAP
StringBuffer soapRequestData = new StringBuffer("");
soapRequestData.append("");
soapRequestData.append("");
soapRequestData.append("");
soapRequestData.append(param);
soapRequestData.append(" ");
soapRequestData.append(" " + " ");
PostMethod postMethod = new PostMethod(wsdl);
// 然后把Soap请求数据添加到PostMethod中
byte[] b=null;
InputStream is=null;
try {
b = soapRequestData.toString().getBytes("utf-8");
is = new ByteArrayInputStream(b, 0, b.length);
RequestEntity re = new InputStreamRequestEntity(is, b.length,"text/xml; charset=UTF-8");
postMethod.setRequestEntity(re);
HttpClient httpClient = new HttpClient();
int status = httpClient.executeMethod(postMethod);
System.out.println("status:"+status);
if(status==200){
soapResponseData = getMesage(postMethod.getResponseBodyAsString(),result);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(is!=null){
is.close();
}
}
return soapResponseData;
}
public static String getParam(Map params){
String param = "";
if(params!=null){
Iterator it = params.keySet().iterator();
while(it.hasNext()){
String str = it.next();
param+="<"+str+">";
param+=params.get(str);
param+=""+str+">";
}
}
return param;
}
public static String getMesage(String soapAttachment,String result){
System.out.println("message:"+soapAttachment);
if(result==null){
return null;
}
if(soapAttachment!=null && soapAttachment.length()>0){
int begin = soapAttachment.indexOf(result);
begin = soapAttachment.indexOf(">", begin);
int end = soapAttachment.indexOf(""+result+">");
String str = soapAttachment.substring(begin+1, end);
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">");
return str;
}else{
return "";
}
}
/**
* @param args
*/
public static void main(String[] args) {
try {
Map param = new HashMap();
param.put("arg0", "sun");
String wsdl="http://localhost:8080/WebService/WebServicePort?wsdl";
String ns = "http://webservice.com/";
String method="printData";
String response =accessService(wsdl,ns,method,param,"return");
System.out.println("main:"+response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
status:200
七月 15, 2016 3:43:27 下午 org.apache.commons.httpclient.HttpMethodBase getResponseBody
警告: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
message:Welcome to use WebService, sun
main:Welcome to use WebService, sun
相关文章:
WSDL WebService和RestFul WebService的个人理解:
http://blog.csdn.net/sunroyi666/article/details/51939802
http://blog.csdn.net/sunroyi666/article/details/51918675