记一次最简单的方法调用webservice服务

调用开放的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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值