webservice json,android如何調用dotnet編寫的webservice

 2023-10-21 阅读 27 评论 0

摘要:附件:開發中ksoap2組件使用了ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar,可以點擊鏈接下載; 1、要使android的程序連接網絡必須要在AndroidManifest.xml文件中加入下面這句話: <!-- 連接網絡必須要設置該項 -->?<uses-pe

附件:開發中ksoap2組件使用了ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar,可以點擊鏈接下載;

1、要使android的程序連接網絡必須要在AndroidManifest.xml文件中加入下面這句話:

<!-- 連接網絡必須要設置該項 -->
?<uses-permission android:name="android.permission.INTERNET"/>

webservice json。否則會報沒權限的異常;

2、使用dotnet寫webservcie要注意使用RPC模式,(1)首先在你的webservice類中用System.Web.Services.Protocols.SoapRpcServiceAttribute屬性指定;(2)在具體的webservice方法中也要指定屬性System.Web.Services.Protocols.SoapRpcMethodAttribute屬性;

如:

??? [WebService(Namespace = "http://tempuri.org/指定webservice的名稱空間

webservice應用實例、??? [SoapRpcService]//指定使用rpc方式
??? public class Default : System.Web.Services.WebService
??? {

??????? [SoapRpcMethod, WebMethod]//具體方法中也要指定rpc方式
??????? public User HelloWorld(User user)
??????? {
??????????? User us = new User();
??????????? us.Name = "Hello " + user.Name;
??????????? us.Age = user.Age;
??????????? return us;
??????? }
??? }

??? //dotnet中的自定義實體類型

??? public class User
??? {
??????? public string Name { get; set; }
??????? public int Age { get; set; }
??? }

webservice java,?

————————————————————————————————

3、下面是android中的調用方法

要在webservice傳輸自定類型必須繼承KvmSerializable接口

調用webservice處理異常,public class User?implements KvmSerializable {

?private String name = null;
?private int age = 0;
?
?@Override
?public Object getProperty(int arg0) {
??// TODO Auto-generated method stub
??Object res = null;
??switch(arg0){
???case 0:
????res = this.name;
????break;
???case 1:
????res = this.age;
????break;
???default:
????break;
??}
??return res;
?}

?@Override
?public int getPropertyCount() {
??// TODO Auto-generated method stub
??return 2;
?}

?@Override
?public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
??// TODO Auto-generated method stub
??switch(arg0){
??case 0:
???arg2.type = PropertyInfo.STRING_CLASS;
???arg2.name = "Name";
???break;
??case 1:
???arg2.type = PropertyInfo.INTEGER_CLASS;
???arg2.name = "Age";
???break;
??default:
???break;
?}
?}

js調用webservice,?@Override
?public void setProperty(int arg0, Object arg1) {
??// TODO Auto-generated method stub
??if(arg1 == null) return;
??switch(arg0){
???case 0:
????this.name = arg1.toString();
????break;
???case 1:
????this.age = Integer.valueOf(arg1.toString());
????break;
???default:
????break;
??}
?}
}

?

4、

//調用webservice的具體方法

net調用webservice。public String SayHello(){
??String nameSpace = "http://tempuri.org/";
??String methodName = "HelloWorld";
??String soapAction = "http://tempuri.org/HelloWorld";

??String url = "??user.setProperty(1, 18);
??PropertyInfo pi = new PropertyInfo();
??pi.setName("user");//webservice接口的參數名,大小寫必須跟dotnet中的webservice暴露出來的名字一致
??pi.setValue(user);
??pi.setType(user.getClass());
??soapObject.addProperty(pi);//將自定參數加入請求對象中
??
??//設置返回參數
??SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//soap協議版本必須用SoapEnvelope.VER11(Soap V1.1)
??envelope.dotNet = false;//注意:這個屬性是對dotnetwebservice協議的支持,如果dotnet的webservice 不指定rpc方式則用true否則要用false
??envelope.bodyOut = transport;
??envelope.setOutputSoapObject(soapObject);//設置請求參數
??envelope.addMapping(nameSpace, "User", user.getClass());//傳對象時必須,參數namespace是webservice中指定的, name是服務器類型的名稱, claszz是自定義類的類型

??
??try {
?????? transport.call(soapAction, envelope);
?????? SoapObject sb = (SoapObject)envelope.bodyIn;//服務器返回的對象存在envelope的bodyIn中
?????? User us= (User)envelope.getResponse();//直接將返回值強制轉換為已知對象
?????? return us.getName() + us.getAge();
??} catch (IOException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (XmlPullParserException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch(Exception ex){
???ex.printStackTrace();
??}
??return "";
?}

轉載于:https://www.cnblogs.com/dynasty/archive/2011/03/02/1969259.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/155907.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息