使用UrlConnection调用WebService服务与上篇博文中的通过Ajax调用WebService服务的原理是一样的,只不过一个是js代码,一个是java代码而已。
直接上代码:
package cn.itcast.ws.urlConnection;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 通过UrlConnection调用WebService服务
* @author pengdi
*
*/
public class App {
public static void main(String[] args) throws Exception {
//服务的地址
URL wsUrl = new URL("http://localhost:6767/hello");
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 param1 = "qwer";
String soap = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' " +
"xmlns:q0='http://ws.itcast.cn/' " +
"xmlns:xsd='http://www.w3.org/2001/XMLSchema' " +
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +
"<soapenv:Body>" +
"<q0:sayHrllo>" +
"<arg0>" + param1 + "</arg0>" +
"</q0:sayHrllo>" +
"</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();
}
}