看了很多博客,发现都是cp出来说明也不清楚。不是缺包就是少代码,一贴就不负责任。自己最后找到了方法,写一个比较完整的方法给大家提供。
- 确保webservice接口可以在网页进行访问,调用webservice接口之前都会确认。如图为可用
2. 可用之后开始编写代码
依赖如下:
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>
代码如下
package com.sitech.miso.ecosp.util;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class WebServiceUtils {
public static String callService(String serviceUrl,String methodName,Object [] args) {
// 创建一个服务(service)调用(call)
String ret="";
try {
Service service = new Service();
// 通过service创建call对象
Call call = (Call) service.createCall();
// 设置service所在URL
call.setTargetEndpointAddress(
new java.net.URL(serviceUrl));
call.setOperationName(methodName);//设置访问的方法名
ret = (String) call.invoke(args);// Object 数组封装了传递的参数
System.out.println(ret);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
public static String startWebService(String cs) {
String res = "";
try {
res=callService("http://134.175.119.89:8981/YZFBusi/services/YZFBusiSOAP?wsdl","callService",new Object[]{cs});
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
//请求串-xml格式 根据个人需求而拼接
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("<REQUEST>");
sb.append("<PARAMS>");
sb.append("<MESSAGETYPE>4001</MESSAGETYPE>");
sb.append("<reqChannel>").append("100009").append("</reqChannel>");
sb.append("<senttype>").append("2").append("</senttype>");
sb.append("<merchantChannel>").append("3").append("</merchantChannel>");
sb.append("<marketCfgId>").append("23124214").append("</marketCfgId>");
sb.append("<firstMerchantId>").append("3214124").append("</firstMerchantId>");
sb.append("<secondMerchantId>").append("dwq34214").append("</secondMerchantId>");
sb.append("<thirdMerchantId></thirdMerchantId>");
sb.append("<fourthMerchantId></fourthMerchantId>");
sb.append("<fifthMerchantId></fifthMerchantId>");
sb.append("<acceptTransSeqNo>").append("4124214124").append("</acceptTransSeqNo>"); //430 +时间到毫秒17 +10位
sb.append("<oldacceptTransSeqNo>").append("").append("</oldacceptTransSeqNo>");
sb.append("<marketChannel>").append("100001").append("</marketChannel>");
sb.append("<outTxnType>").append("242341").append("</outTxnType>");
sb.append("<supplyOrgCode>").append("dwq3e4124").append("</supplyOrgCode>");
sb.append("<productNo>").append("124214125").append("</productNo>");
sb.append("<rebateAmt>").append("12").append("</rebateAmt>");
sb.append("<tradeType>").append("342525").append("</tradeType>");
sb.append("<acceptTransDate>").append("3453521").append("</acceptTransDate>");
sb.append("<acceptTransType>").append("21312421").append("</acceptTransType>");
sb.append("<callbackURL>").append("324235").append("</callbackURL>");
sb.append("<channelId></channelId>");
sb.append("<clerkId></clerkId>");
sb.append("<clerkBestpayId></clerkBestpayId>");
sb.append("<saleProductId></saleProductId>");
sb.append("</PARAMS>");
String reqXML = sb.toString();
String tmpStr =reqXML.substring(reqXML.indexOf("<PARAMS>")+8, reqXML.indexOf("</PARAMS>")).trim(); //不包括PARAMS
tmpStr = tmpStr+"wggrdfaebkcld";
String sign = MD5Util.MD5Encode(tmpStr, "utf-8").toUpperCase();
sb.append("<sign>"+sign+"</sign>");
sb.append("<flag>1</flag>");
sb.append("</REQUEST>");
WebServiceUtils.startWebService(sb.toString());//调用接口
}
}
//a.这个里面的访问地址,方法名,对应的是我上篇博客的webservice参数,我简单介绍下,前面是webservice接口所部署的服务器网络Ip,servers路径,hello服务名,dockinfoInsert你要调用的接口的方法名,new Object[]{cs}放你传递的参数。
// b.这个一般是接口的提供方会给出接口介绍文档,然后你根据文档就可以找到对应的路径,方法名。
测试:直接运行main方法。查看日志,发现已经调通
其中有什么问题请留言会及时回复