关于java调用DoNet的webservice(一)

本文介绍使用Java通过Apache Axis库调用WebService的方法,并提供了一个具体的示例代码,展示了如何获取指定城市的天气信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         终于有空写一下blog了,说一下java调用webservice的方式吧,这里的网络API是DoNet写的,与网上其他的调用有点不一样。
axis方式:
        首先,到apache官网下载axis的包,或者百度一下。

      接着,就是把jar包放到工程的WEB-INF/lib下,相信这个就不用我多说了吧 !

       以下就是代码:

import  java.util.LinkedList;
import  java.util.List;
import  java.util.Map;
import  java.util.Vector;

import  javax.xml.namespace.QName;

import  org.apache.axis.client.Call;
import  org.apache.axis.client.Service;

public   class  PutWeather 
{
    
private  String url = " http://www.webxml.com.cn/WebServices/WeatherWebService.asmx " ;
//提供接口的地址
    
private  String soapaction = " http://WebXml.com.cn/ " ;      //域名,这是在server定义的
    
    
public  PutWeather()
    {
        String City
= " 北京 " ;
        
        Service service
= new  Service();
        
try {
            Call call
= (Call)service.createCall();
            
            call.setTargetEndpointAddress(url);
            
            call.setOperationName(
new  QName(soapaction, " getWeatherbyCityName " ));  //设置要调用哪个方法
            call.addParameter(
new  QName(soapaction, " theCityName " ),  //设置要传递的参数
                    org.apache.axis.encoding.XMLType.XSD_STRING,
                    javax.xml.rpc.ParameterMode.IN);
            call.setReturnType(
new  QName(soapaction, " getWeatherbyCityName " ),Vector. class );  //要返回的数据类型(自定义类型)
            
//             call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//(标准的类型)
            
            call.setUseSOAPAction(
true );
            call.setSOAPActionURI(soapaction 
+   " getWeatherbyCityName " );
    
                        
            Vector v
= (Vector)call.invoke( new  Object[]{City});//调用方法并传递参数
        
            
for ( int  i = 0 ;i < v.size();i ++ )
            {
                System.out.println(v.get(i));
            }
            
            
        }
catch (Exception ex){ex.printStackTrace();}
        
    }
    
    
public   static   void  main(String args[])
    {
        PutWeather pw
= new  PutWeather();
    }
    
    
}

我所调用的这个接口是免费使用的,但是会有限制就是在同意个ip在一天之内只能访问300次,实际我也没有试过真的去访问300次,也是听别人说的。

这个webservice会返回一个大小为23的字符串数组,因此在 

call.setReturnType(new QName(soapaction,"getWeatherbyCityName"),Vector.class);

与下面的有所不同,这里设置的返回类型是自定义类型的,也就是没有jar包所提供的类型,因此要返回数组就只能用这种方式设置自定义类型了,如果想把返回的值强制转换为字符串数组会报异常。

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

关于axis2的将在过几天再发表,据说axis2要比axis的效率更加高喔!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值