• java调用webservice接口


    1.直接AXIS调用远程的webservice

    注意:不同版本的Axis相差很大,大家最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    public class WebServiceClient {
    public static void main(String[] args) {
    try {
    String endpoint = "http://172.19.0.153:8080/scs-web/webservice/SignService";
    // 直接引用远程的wsdl文件
    // 以下都是套路
    Service service = new Service();
    call.setOperationName("signContract");// WSDL里面描述的接口名称
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress(endpoint);
    call.addParameter("channel",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接口的参数
    call.addParameter("templateId",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接口的参数
    call.addParameter("strJson",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接口的参数
    call.addParameter("isSeal",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接口的参数
    call.addParameter("callBackUrl",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接口的参数
    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
    String templateId = "3021";
    String channel = "1007";
    String strJson = "{"certApplys":[{"useridno":"N256613448988875","address":"山东省德州临邑县恒源","engName":"test","telno":"15869611844","email":"test@credithc.com","username":"CHENG AI-HSIANG","idTypeCode":"Z"}],"singnalElement":{"a":"","b":"√","product":"利投宝12_B","amount":"100,000.00","idType":"户照","year":2016,"paybankName":"兴业银行","backbankCardNo":"622908357966352914","idNo":"N213447","month":12,"lockTime":12,"paybankCardNo":"622908357966352914","bigAmount":"壹拾万元整","name":"CHENG AI-HSIANG","customerId":"C_20161214000158","contractId":"L_20161214291739","backbankName":"兴业银行","yearIrr":"9.6%","payName":"CHENG AIHSIANG","day":14}}
    ";
    String isSeal = "1";
    String callBackUrl = "?";
    
    String result = (String) call.invoke(new Object[] {channel,templateId,isSeal,strJson,callBackUrl});
    // 给方法传递参数,并且调用方法
    System.out.println("result is :" + result);
    } catch (Exception e) {
    System.err.println(e.toString());
    }
    }
    }

    2.使用Http方式调用远程的webservice

    package com.webservice;
    
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class WebServiceClient2 {
    public static void main(String[] args) {
    try {
    // 1 指定WebService服务的请求地址:
    String wsUrl = "http://172.19.0.153:8080/scs-web/webservice/SignService";
    
    // 2 创建URL:
    URL url = new URL(wsUrl);
    // 3 建立连接,并将连接强转为Http连接
    URLConnection conn = url.openConnection();
    HttpURLConnection con = (HttpURLConnection) conn;
    
    // 4,设置请求方式和请求头:
    con.setDoInput(true); // 是否有入参
    con.setDoOutput(true); // 是否有出参
    con.setRequestMethod("POST"); // 设置请求方式
    con.setRequestProperty("content-type", "text/xml;charset=UTF-8");
    
    // 5,手动构造请求体
    String channel = "1007";
    String templateId = "3021";
    String isSeal = "1";
    String strJson = "{"certApplys":[{"useridno":"N256613448988875","address":"山东省德州临邑县恒源","engName":"test","telno":"15869611844","email":"test@credithc.com","username":"CHENG AI-HSIANG","idTypeCode":"Z"}],"singnalElement":{"a":"","b":"√","product":"利投宝12_B","amount":"100,000.00","idType":"户照","year":2016,"paybankName":"兴业银行","backbankCardNo":"622908357966352914","idNo":"N213447","month":12,"lockTime":12,"paybankCardNo":"622908357966352914","bigAmount":"壹拾万元整","name":"CHENG AI-HSIANG","customerId":"C_20161214000158","contractId":"L_20161214291739","backbankName":"兴业银行","yearIrr":"9.6%","payName":"CHENG AIHSIANG","day":14}}
    ";
    String callBackUrl = "?";
    
      String  requestBody = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"";
    requestBody += " xmlns:xsd="http://www.w3.org/2001/XMLSchema"";
    requestBody += " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">";
    requestBody += "<soapenv:Body>";
    requestBody += "<q0:signContract xmlns:q0="http://impl.webservice.scs.credithc.com/">";
    requestBody += "<channel>" + channel + "</channel>";
    requestBody += "<templateId>" + templateId + "</templateId> ";
    requestBody += "<isSeal>" + isSeal + "</isSeal> ";
    requestBody += "<strJson>" + strJson + "</strJson> ";
    requestBody += "<callBackUrl>" + callBackUrl + "</callBackUrl> ";
    requestBody += "</q0:signContract>";
    requestBody += "</soapenv:Body>";
    
     
    
    requestBody += "</soapenv:Envelope>";
    
    // 6,通过流的方式将请求体发送出去:
    OutputStream out = con.getOutputStream();
    out.write(requestBody.getBytes());
    out.close();
    // 7,服务端返回正常:
    int code = con.getResponseCode();
    if (code == 200) {// 服务端返回正常
    InputStream is = con.getInputStream();
    byte[] b = new byte[1024];
    StringBuffer sb = new StringBuffer();
    int len = 0;
    while ((len = is.read(b)) != -1) {
    String str = new String(b, 0, len, "UTF-8");
    sb.append(str);
    }
    System.out.println(sb.toString());
        is.close();
    }
    con.disconnect();
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    }
    }https://blog.csdn.net/java_cainiao2016/article/details/80032377

    3.springboot 动态调用

    package com.credithc.re.sign.webservice;
     
    import com.credithc.re.sign.service.RedisService;
    import org.apache.cxf.endpoint.Client;
    import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
     
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.xml.namespace.QName;
    import java.util.UUID;
     
    @WebService(name = "reSignService")
    @Component
    public class ReSignService {
     
        @Autowired
        private RedisService redisService;
     
        @WebMethod
        @WebResult
        public String reSign(@WebParam(name = "channel") String channel,
                             @WebParam(name = "templateId") String templateId,
                             @WebParam(name = "isSeal") int isSeal,
                             @WebParam(name = "strJson") String strJson,
                             @WebParam(name = "callBackUrl") String callBackUrl) {
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            redisService.set(uuid, callBackUrl);
            callBackUrl = "http://172.19.0.153:8081/re/sign/callback" + "?id=" + uuid;
            
            // 创建动态客户端
            JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
            Client client = dcf.createClient("http://172.19.0.153:8080/scs-web/webservice/SignService?wsdl");
            Object[] objects = new Object[0];
            try {
                QName opName = new QName("http://webservice.scs.credithc.com/", "signContract");
                objects = client.invoke(opName, channel, templateId, isSeal, strJson, callBackUrl);
                System.out.println("返回数据:" + objects[0]);
            } catch (java.lang.Exception e) {
                e.printStackTrace();
            }
            return "请求成功";
        }
    }
    package com.credithc.re.sign.config;
    
    import com.credithc.re.sign.webservice.ReSignService;
    import org.apache.cxf.Bus;
    import org.apache.cxf.jaxws.EndpointImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.xml.ws.Endpoint;
    
    @Configuration
    public class CxfConfig {
    
        @Autowired
        private Bus bus;
    
        @Autowired
        private ReSignService reSignService;
    
        @Bean
        public Endpoint endpoint(){
            EndpointImpl endpoint = new EndpointImpl(bus,reSignService);
            endpoint.publish("/reSignService");
            return endpoint;
        }
    }
  • 相关阅读:
    Bootstrap按钮
    Bootstrap标签页
    Identity 使用的命名空间
    bootstrap复选框和单选按钮
    更改Identity用户信息
    SSM配置梳理
    敏捷软件开发 第十三章~第十七章
    敏捷软件开发 第七章、第八章、第九章
    敏捷软件开发 第六章 一次编程实践
    敏捷软件开发 一至五章
  • 原文地址:https://www.cnblogs.com/tiandi/p/14503270.html
Copyright © 2020-2023  润新知