Idea+Meven调用外部WebService接口

最进研究webservice 之前谢了一个发布webservice的文章 现在补一篇调用外部webservice的文章。。。gogogo!!!
首先我是开启一个web环境搭建一个web项目该有的框架(初学一切从简)
接下来导入meven依赖(贴主要的)
<dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc-api</artifactId> <version>1.1</version> </dependency>
中途会报java.lang.ClassNotFoundException: org.apache.commons.discovery.tools.DiscoverSingleton错误导入commons-discovery-0.2.jar
(找不到相应的meven依赖 所以我去apache的官网下载了一个commons-discovery-0.2.jar包 并且在WEB-INFO下创建了一个lib目录 然后放入并且导入)
再然后,创建一个类调用即可

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

@Controller
public class WebServiceTest
{
    @RequestMapping(value = "/test",method = RequestMethod.GET)
    @ResponseBody
    public String doSelectRiskReportForm(HttpServletRequest request,
            HttpServletResponse response){
        //调用接口
        //方法一:直接AXIS调用远程的web service
        String result=null;
        try {
            String endpoint = "http://localhost:8080/service/RemoteService?wsdl";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint);
            String parametersName = "str"; 		// 参数名//对应的是 public String printWord(@WebParam(name = "settle_num") String settle_num);
	        //call.setOperationName("printWord");  		// 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名
            // namespaceURI:命名空间--即WebService接口的targetNamespace属性
            //    localPart:调用的方法名
            call.setOperationName(new QName("urm:first", "getString"));
            call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参
            call.setReturnType(XMLType.XSD_STRING); 	// 返回值类型:String
            String message = "zpf:";
            //将夹带的信息方到Object中进行加载
            result = (String) call.invoke(new Object[] {message});// 远程调用message

        } catch (Exception e) {
            System.err.println(e.toString());
        }
        System.out.println(result);
        return result;
    }

}

测试结果:zpf:XXXXXXXXXXXXXXX
我的测试接口就一个String类型的输入参数 所以就比较简单。
到这里如果没有什么问题 差不多就结束了。
当然还要其他的方式调用接口 我这里用的是axis技术 用wsdl报文测试也可以而且不用写代码!!!
今天的分享就这么多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值