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}}\r\n";
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}}\r\n";
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;
}
}

java调用webservice接口的更多相关文章

  1. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  2. java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport

    网上说wsimport是jdk1.6后自带的客户端生成调用webservice接口的工具,其实我挺喜欢原生的东西,毕竟自家的东西用着应该最顺手啊,但往往让人惊艳的是那些集成工具. 本机jdk1.8.1 ...

  3. Java调用webservice接口方法(SOAP message、xfire、axis)

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  4. java 调用webservice接口

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  5. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  6. java调用webservice接口 几种方法

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  7. JAVA调用WebService接口(以调用第三方天气接口为例)

    天气接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 1.打开项目文件目录路径文件夹,在当前文件夹打开cmd, ...

  8. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  9. java如何调用webservice接口

    java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用.理论上 ...

  10. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

随机推荐

  1. 采用DevOps的7个主要障碍,你一定不知道!

    尽管DevOps已经相对成熟,DevOps哲学仍然在回避甚至是最著名和最有资源的组织.一份令人震惊的Gartner报告显示,75%的DevOps项目未能实现其目标.为什么DevOps的失败率如此之高? ...

  2. ET介绍——单线程异步

    单线程异步 前面几个例子都是多线程实现的异步,但是异步显然不仅仅是多线程的.我们在之前的例子中使用了Sleep来实现时间的等待,每一个计时器都需要使用一个线程,会导致线程切换频繁,这个实现效率很低,平 ...

  3. #树状数组#CF461C Appleman and a Sheet of Paper

    题目传送门 分析 可以发现往左翻太多相当于往右翻一点,所以如果翻的位置超过一半那么打一个取反标记再另一边翻转, 用树状数组维护当前厚度,时间复杂度 \(O(n\log^2 n)\) 代码 #inclu ...

  4. Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新

    目录 简介 Spring Boot的基本操作 Spring Boot的构建和部署 Spring Boot工具 Spring Boot的测试 Spring Boot中使用JPA Spring Boot和 ...

  5. 这一次,让我们一起来搞懂MySQL

    欢迎加入我的专栏,和我一起开始 MySQL 学习之旅. 从日常的开发和优化中,一步步地从一个数据库小白成为 MySQL 调优的开发人员.回想起来,从我第一次带创建索引至今,已经有十个年头了.在这个过程 ...

  6. 本周四晚19:00知识赋能第八期第1课丨ArkUI框架整体设计

    OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划项目自 2021 年 10 月 24 日上线以来已经走过了7期,为开发者提供了一个良 ...

  7. 自动编号工具类:NumAutoUtils详解

    在软件开发中,经常需要生成唯一的编号,例如订单号.发票号.实验编号等.为了简化这一过程,本文将介绍一个Java工具类NumAutoUtils,它可以帮助我们生成带有前缀和日期的自动编号. 概述 Num ...

  8. SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算

    大气污染问题既是局部.当地的,也是区域的,甚至是全球的.本地的污染物排放除了对当地造成严重影响外,同时还会在动力输送作用下,极大地影响下风向地区的大气环境状况.数值模式模拟是分析大气污染物时空分布和成 ...

  9. 20个Python 正则表达式应用与技巧

    本文分享自华为云社区<Python 正则表达式大揭秘应用与技巧全解析>,作者:柠檬味拥抱. Python 中的 re 模块是用于处理正则表达式的强大工具.正则表达式是一种用来匹配字符串的模 ...

  10. 英语 one day

    前言 I do not know if it work,but just go. 内容 1.quote vt:摘要,引用 n:引语 He quote a passage from the presid ...