java使用axis实现webservice接口调用

看了很多博客,发现都是cp出来说明也不清楚。不是缺包就是少代码,一贴就不负责任。自己最后找到了方法,写一个比较完整的方法给大家提供。

  1. 确保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方法。查看日志,发现已经调通

其中有什么问题请留言会及时回复 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值