日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java soap协议头_自己调用webservice方法总结(带请求头SoapHeader)

發布時間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java soap协议头_自己调用webservice方法总结(带请求头SoapHeader) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調用webservice總結:1.加入第三方的jar包 Ksoap2-android-XXX2.訪問響應的webservice的網站,查看響應的信息,得到nameSpace,methodName,url,soapAction3.如果request信息還有帶有SoapHander的。那么就要封裝:依據參數封裝

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信息的SoapBody//指定WebService的命名空間和調用的方法名

SoapObject soapObject=newSoapObject(nameSpace, methodName);//處理soap12:Body數據部分

soapObject.addProperty("loginName",username);

soapObject.addProperty("password",password);5.指定SoapSerializationEnvelope信息

SoapSerializationEnvelope envelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);//SoapEnvelope.VER11 表示使用的soap協議的版本號 1.1 或者是1.2

envelope.headerOut=header;

envelope.bodyOut=soapObject;

envelope.dotNet= true; //指定webservice的類型的(java,PHP,dotNet)

envelope.setOutputSoapObject(soapObject);6.指定HttpTransportSE

HttpTransportSE ht= newHttpTransportSE(url);7.訪問webservice服務器

ht.call(soapAction, envelope);8.兩種方式獲取服務器返回的信息

envelope.getResponse();

envelope.bodyIn;

兩者的區別:Webservice開發的時候一般情況下大家接受webservice服務器返回值的時候都是使用

SoapObject soapObject=(SoapObject) envelope.getResponse();這個來接受返回

來的值,但這種方法往往會產生java.lang.ClassCastException: org.ksoap2.

serialization.SoapPrimitive這樣的錯誤。

在服務器端返回值是String類型的數值的時候使用SoapObject soapObject=(SoapObject)

envelope.getResponse()會產生java.lang.ClassCastException: org.ksoap2.

serialization.SoapPrimitive這樣的錯誤。

使用SoapObject result= (SoapObject)envelope.bodyIn和 Object object =envelope.getResponse();就可以解決這種錯誤。 如果服務器返回值的類型是byte[] 的時候,

使用Object object= envelope.getResponse();和SoapObject result =(SoapObject)envelope.bodyIn;

都不會發生錯誤現象,但是在使用Object object=envelope.getResponse();

取回來的值在使用base64進行解碼和編碼的時候會報出錯誤。如果使用SoapObject result=(SoapObject)envelope.bodyIn;

就可以完整的將byte[]進行解碼和編碼,byte[] ops = Base64.decode(result.getProperty(0).toString());

SoapObject result=(SoapObject) envelope.bodyIn;

String str=result.getProperty(0).toString();

或者是

Object result=(Object) reqVo.envelope.getResponse();

String str=result.toString();9.解析字符串str獲取客戶端想要的信息

總結

以上是生活随笔為你收集整理的java soap协议头_自己调用webservice方法总结(带请求头SoapHeader)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。