标签:
一. 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; } }
<?xml version="1.0" encoding="UTF-8"?> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.3-hudson-390-. --> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.com/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WebServiceService" targetNamespace="http://webservice.com/"> <types> <xsd:schema> <xsd:import namespace="http://webservice.com/" schemaLocation="WebServiceService_schema1.xsd"/> </xsd:schema> </types> <message name="printData"> <part element="tns:printData" name="parameters"/> </message> <message name="printDataResponse"> <part element="tns:printDataResponse" name="parameters"/> </message> <portType name="WebServiceDelegate"> <operation name="printData"> <input message="tns:printData"/> <output message="tns:printDataResponse"/> </operation> </portType> <binding name="WebServicePortBinding" type="tns:WebServiceDelegate"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="printData"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="WebServiceService"> <port binding="tns:WebServicePortBinding" name="WebServicePort"> <soap:address location="http://localhost:8080/WebService/WebServicePort"/> </port> </service> </definitions>
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/" targetNamespace="http://webservice.com/" version="1.0"> <xs:element name="printData" type="tns:printData"/> <xs:element name="printDataResponse" type="tns:printDataResponse"/> <xs:complexType name="printData"> <xs:sequence> <xs:element minOccurs="0" name="arg0" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="printDataResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
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<String,String> params,String result)throws Exception{ //拼接参数 String param = getParam(params); String soapResponseData = ""; //拼接SOAP StringBuffer soapRequestData = new StringBuffer(""); soapRequestData.append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"); soapRequestData.append("<soap:Body>"); soapRequestData.append("<ns1:"+method+" xmlns:ns1=\""+ns+"\">"); soapRequestData.append(param); soapRequestData.append("</ns1:"+method+">"); soapRequestData.append("</soap:Body>" + "</soap:Envelope>"); 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<String,String> params){ String param = ""; if(params!=null){ Iterator<String> 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<String,String> param = new HashMap<String,String>(); 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:<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:printDataResponse xmlns:ns2="http://webservice.com/"><return>Welcome to use WebService, sun</return></ns2:printDataResponse></S:Body></S:Envelope> main:Welcome to use WebService, sun
http://blog.csdn.net/sunroyi666/article/details/51918675
标签:
原文地址:http://blog.csdn.net/sunroyi666/article/details/51917991