java如何通过eclipse安装axis2来调用webservice 20

这是http://www.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL获取天气的wsdl,请问通过eclipse如何通过程序... 这是http://www.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL获取天气的wsdl,请问通过eclipse如何通过程序来调用这个webservice,请高手详述下步骤!最好能带截图。谢谢! 展开
 我来答
育知同创教育
2016-02-03 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

通过eclipse安装axis2来调用webservice的方法:

1、 在eclipse的菜单栏中选择 window-->preferences-->web service -->axis2 preferences 在axis2 runtime 下的 axis2 runtime location中指定解压目录

2、右击oprationServiceImpl--->webservice --->create webservice  如下:

3、在service implemention中出现需要部署的服务类 将服务器的运行状态设置为start service 并且设置 service runtime (web服务器) web service runtime (axis的版本)

对应的web项目。勾选publish the web service 和monitor the service  ---> next --->next直到:

点击 start server 启动刚刚部署的web项目 --->next 直到 finish 此时部署就已经完成了。

4、在axis-test中编写客户端代码并调用服务器程序

package com.hualom.axis.client;


import javax.xml.namespace.QName;


import org.apache.axis2.AxisFault;

import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.Options;

import org.apache.axis2.rpc.client.RPCServiceClient;


public class OprationClient {

    /** 

     * @param args 

     * @throws AxisFault 

     */  

    public static void main(String[] args) throws AxisFault {  

        // 使用RPC方式调用WebService  

        RPCServiceClient serviceClient = new RPCServiceClient();  

        Options options = serviceClient.getOptions();  

        // 指定调用WebService的URL  

        EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2-testServer/services/OprationServiceImpl");  

        options.setTo(targetEPR);  

        // 指定要调用的计算机器中的方法及WSDL文件的命名空间:impl.service.axis.hualom.com 服务类的包名称。  

        QName searchResult = new QName("http://impl.service.axis.hualom.com","search");

        QName noSearchResult = new QName("http://impl.service.axis.hualom.com","noSearch");

        // 设置发送到服务器的内容

        Object[] opAddEntryArgs = new Object[] { "你好 server"};  

        // 指定返回值的类型

        Class[] classes = new Class[] { String.class };

        // 调用服务器开放的接口并且返回结果   如果没有返回值可以直接调用  serviceClient.invokeRobust(opName, opAddEntryArgs)

        System.out.println(serviceClient.invokeBlocking(searchResult,opAddEntryArgs, classes)[0]);  

    }  

}

Kmars1985
2013-12-17 · TA获得超过1172个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:393万
展开全部

调用这个webservice不需要安装axis2,但是可以在你的工程里引入Axis2的包来编写一个RPC客户端程序。

import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;


按照RPC的方式(可以搜搜,网上很多)写一个调用函数就ok了,比如:

public Object invokeWebservice() throws AxisFault {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://www.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL");
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds(TIME_OUT);
QName opAddEntry;
Object[] opAddEntryArgs = null;
Class<?>[] classes = new Class<?>[] { String.class };
opAddEntry = new QName("", "");
return serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0];
}
追问
我也这么试过,总是报错。你好人做到底,把方法参数都补齐了告诉我一下呗!
追答
调用天气查询需要用户ID,我这边网络限制不能注册。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式