java调用webservice服务的几种方法
解决方法:
webservice服务端代码参考地址:http://www.yayihouse.com/yayishuwu/chapter/1786
第一种:
URL wsUrl = new URL("http://localhost:8080/httpSMS2/ws/hi");
HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
OutputStream os = conn.getOutputStream();
//请求体
String soap = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://test.com/\" xmlns:xsd=
\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<soapenv:Body> <q0:sayHello><arg0>5555</arg0> </q0:sayHello> </soapenv:Body> </soapenv:Envelope>";
os.write(soap.getBytes());
InputStream is = conn.getInputStream();
byte[] b = new byte[1024];
int len = 0;
String s = "";
while((len = is.read(b)) != -1){
String ss = new String(b,0,len,"UTF-8");
s += ss;
}
System.out.println(s);
is.close();
os.close();
conn.disconnect();
第二种:
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8080/httpSMS2/ws/hi?wsdl");
Object[] objects;
try {
objects = client.invoke("sayHello",new Object[]{"admin"});
//输出调用结果
System.out.println(objects[0].toString());
} catch (Exception e) {
e.printStackTrace();
}
第三种:
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = dcf
.createClient("http://localhost:8080/httpSMS2/ws/hi?wsdl");
// url为调用webService的wsdl地址
QName name = new QName("http://test.com/", "sayHello");
// namespace是命名空间,methodName是方法名
String xmlStr = "aaaaaaaa";
// paramvalue为参数值
Object[] objects;
try {
objects = client.invoke(name, xmlStr);
System.out.println(objects[0].toString());
} catch (Exception e) {
e.printStackTrace();
}
第四种:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(WebServiceServerI.class);
factory.setAddress("http://localhost:8080/httpSMS2/ws/hi?wsdl");
WebServiceServerI client = (WebServiceServerI)factory.create();
System.out.println(client.sayHello("2"));