调用开放的webservice有以下几种方式:
方式1:Http可以用来调用webservie服务,也可以抓取网页数据
方式1:纯java(自带API) jws
方式2:cxf框架
方式3:axis2框架
今天来看看最简单一直调用方式
// 定义一个请求报文模板
String xmlTemplate =
"<?xml version\"1.0\" encoding=\"UTF-8\"?>\n" +
"<soapenv:Envelope xmlns:ns0=\"http://bea.isprint.com/\"\n" +
"xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"" +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
"<soapenv:Header>\n" +
"</soapenv:Header>\n" +
"<soapenv:Body>\n" +
"<ns0:verifySessionToken xmlns:ns0=\"http://bea.isprint.com/\">\n" +
"<sessionToken>%s</sessionToken>\n" +
"<csrf>%s</csrf>\n" +
"</ns0:verifySessionToken>\n" +
"<soapenv:Body>\n" +
"</soapenv:Envelope>";
// 使用HttpURLConnection调用
String xmlRequest = String.format(xmlTemplate, sessionToken, String csrf);
OutputStream os = null;
InputStream is = null;
InputStreamReader isreader = null;
String result = null;
try {
URL url = new URL(ConfigUtils.get(Constant.SSO_SERVER_URL_KEY));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("SOAPAction", "application/soap+xml");
conn.setRequestProperty("Content-Type", "application/xml; charset=UTF-8");
conn.setRequestProperty("Accept", "application/json");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setDoInput(true);
conn.setDoOutput(true);
os = conn.getOutputStream();
os.write(xmlRequest.getBytes());
os.flush();
conn.connect();
int responseCode = conn.getResponseCode();
if(200 == responseCode) {
is = conn.getInputStream();
} else {
is = conn.getErrorStream();
}
isreader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isreader);
StringBuilder sb = new StringBuilder();
String temp = null;
while (null != (temp = br.readLine())) {
sb.append(temp);
}
result = sb.toString();
logger.info(result);
} catch (Exception e) {
logger.info("通讯失败");
e.printStackTrace();
} finally {
try {
os.close();
is.close();
isreader.close();
} catch (Exception e) {
e.printStackTrace();
}
}