android通过ksoap2和axis调用web service

针对我们的订餐系统做如下记录:

1.       整理dao包下的类:

a)         把连接数据库的内容直接写在类里,不调用SqlFunction

b)        有些返回的是entity包下的实体类,把这些返回值改成String,内容用标签分隔

2.       axis在tomcat的webapp下面,把整理好的类放到axis下,把后缀改成jws

3.       在浏览器测试一下,输入http://localhost:8080/axis/包/类.jws,如果显示xml文件就说明发布成功

4.       android程序详细代码附后,其中几个类的调用顺序:

a)         SoapObject (addProperty添加参数)

b)        SoapSerializationEnvelope

c)        AndroidHttpTransport

5.       在android程序中要注意以下几点:

a)         要记得在AndroidManifest.xml中加

<uses-permission android:name="android.permission.INTERNET" />

b)        用SoapObject传输,其中用addProperty方法添加参数,参数名和服务器的不用一致,但是顺序要一致。

c)        SOAP请求信息对应SoapSerializationEnvelope对象。其中构造中传递的是SOAP协议的版本号,我们用的是SoapEnvelope.VER11。然后要指定bodyOut属性,对应SoapObject对象。

d)        用HttpTransportSE类指定WebService的WSDL文档的URL,也就是我们的web service的地址。call方法的第1个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象

e)         使用KSOAP2调用WebService可分为6步来完成,其中主要使用了SoapObject对象来指定了要调用的方法,然后通过HttpTransportSE对象的call方法来调用WebService的方法,最后通过getResponse方法返回结果。

f)         详细教程可以参考http://www.cnblogs.com/xiaohuzi/articles/1887312.html 

 

调用代码:

public static String doCallWebService(String soapAction, String methodName, Map<String, String> props){

    String xmlStr;   

    SoapObject request = new SoapObject(Constant.NAMESPACE, methodName);

    Set<String> sets = props.keySet();

    Iterator it = sets.iterator();

    while(it.hasNext()){

        String name =(String)it.next();

        String value =(String)props.get(name);

        request.addProperty(name, value);

     

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);

        AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (Constant.URL);            

        try {

        androidHttpTransport.call(soapAction, envelope);

       

            Object result = envelope.getResponse();

            Log.i("resultObject",String.valueOf(result==null));

            xmlStr = result.toString();

        } catch(Exception e) {

        e.printStackTrace(); 

        return null;

             

        return xmlStr;

}

其中

   public static final String SOAP_ACTION = "http://tempuri.org/axis/3G/ModBean/check";
 public static final String METHOD_NAME = "check";
  
    public static final String NAMESPACE = "http://tempuri.org/axis/3G/ModBean";
    public static final String URL = "http://10.21.244.54:8080/axis/3G/ModBean.jws";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值