WebService1、数据交互

调用webservice总结:
  1.加入第三方的jar包 Ksoap2-android-XXX  
  2.访问响应的webservice的网站,查看响应的信息,获得nameSpace,methodName,url,soapAction
  3.若是request信息还有带有SoapHander的。那么就要封装:依据参数封装:java

  Element[] header = new Element[1]; 
  header[0] = new Element().createElement(nameSpace, "SoapHeader"); 
                
  Element userName = new Element().createElement(nameSpace, "UserID"); 
  userName.addChild(Node.TEXT, UserID); 
  header[0].addChild(Node.ELEMENT, userName); 
                
  Element pass = new Element().createElement(nameSpace, "PassWord"); 
  pass.addChild(Node.TEXT, PassWord); 
  header[0].addChild(Node.ELEMENT, pass); 

4.封装request信息的SoapBodyandroid

 // 指定WebService的命名空间和调用的方法名
 SoapObject  soapObject=new SoapObject(nameSpace, methodName);
 //处理soap12:Body数据部分,也就是请求数据的参数
 soapObject.addProperty("loginName",username);
 soapObject.addProperty("password",password);

 5.指定SoapSerializationEnvelope信息web

 //SoapEnvelope.VER11 表示使用的soap协议的版本号 1.1 或者是1.2
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.headerOut=header;
envelope.bodyOut=soapObject;
envelope.dotNet = true; 
envelope.setOutputSoapObject(soapObject); 

6.指定HttpTransportSE服务器

 HttpTransportSE ht = new HttpTransportSE(url); 

 7.访问webservice服务器网站

ht.call(soapAction, envelope);

 8.两种方式获取服务器返回的信息:ui

try{ result =(SoapObject) soapEnvelope.getResponse();}
catch(ClassCastException e){ result =(SoapObject)soapEnvelope.bodyIn;}

9.解析字符串str获取客户端想要的信息url

注意:1.在作android  Webservice开发的时候通常状况下你们接受webservice服务器返回值的时候都是使用SoapObject soapObject = (SoapObject) envelope.getResponse();这个来接受返回来的值,但这种方法每每会产生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive这样的错误。在服务器端返回值是String类型的数值的时候使用SoapObject soapObject = (SoapObject) envelope.getResponse();和 SoapObject result = (SoapObject)envelope.bodyIn;这两种方法来接受值都会报出 java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive这样的错误。 咱们能够使用 Object object = (Object)envelope.getResponse();就能够解决这种错误。spa

2.若是在导入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar后虽然没有报错,可是运行时仍是提示某个class找不到,必须:code

项目的Properties-->Java Build Path-->Order and Export 对相应的jar包打上勾,而后将工程clean,而后编译运行。blog

相关文章
相关标签/搜索