android soapfault 服务器无法处理请求,Android中调用已经部署到IIS中.net的webservice数据Android端无法执行报错的问题。求大神指点。...

1 /**2 *3 *4 * @author wym5 *6 */

7 public classMainActivity extends Activity {8

9 final String METHOD_HELLO_WORLD = "HelloWorld";10 final String METHOD_ECHO_MESSAGE = "EchoMessage";11 privateTextView txtMsg;12 //服务器链接

13 final String WEB_SERVICE_URL = "http://192.168.127.105/WebService1.asmx?wsdl";14 //默认命名空间

15 final String Namespace = "http://tempuri.org/";16 protected voidonCreate(Bundle savedInstanceState) {17 super.onCreate(savedInstanceState);18 setContentView(R.layout.activity_main);19 txtMsg=(TextView) findViewById(R.id.txtMsg);20 }21

22   //调用dohello方法

23 public voiddoHellow(View view)24 {25 Log.i("---------doHellow---", "doHellow");26 Map values = new HashMap();27 values.put("msg", "这是Android手机doHellow方法发出的信息");28 Request(METHOD_HELLO_WORLD);29 }

//调用doEchoMessage方法30 public voiddoEchoMessage(View view)31 {32 Log.i("---------doEchoMessage---", "doEchoMessage");33 Map values = new HashMap();34 values.put("msg", "这是Android手机doEchoMessage方法发出的信息");35 Request(METHOD_ECHO_MESSAGE, values);36 }37

38 /**39 * 执行异步任务40 *41 * @param params42 * 方法名+参数列表(哈希表形式)43 */

44 public void Request(Object... params) {45 new AsyncTask() {46

47 @Override48 protected String doInBackground(Object... params) {49 if (params != null && params.length == 2) {50 return CallWebService((String) params[0],51 (Map) params[1]);52 } else if (params != null && params.length == 1) {53 return CallWebService((String) params[0], null);54 } else{55 return null;56 }57 }58

59 protected voidonPostExecute(String result) {60 if (result != null) {61 txtMsg.setText("服务器回复的信息 :" +result);62 }63 };64

65 }.execute(params);66 }67

68 /**69 *70 * 调用WebService71 * @return WebService 返回值72 */

73 public String CallWebService(String MethodName, Map params) {74 Log.i("--------进入调用CallWebService------","CallWebService");75 //1、指定webservice的命名空间和调用的方法名76 //SoapObject类的第一个参数表示WebService的命名空间,77 //可以从WSDL文档中找到WebService的命名空间。第二个参数表示要调用的WebService方法名。

78 SoapObject request=newSoapObject(Namespace,MethodName);79

80

81 //2、设置调用方法的参数值,如果没有参数,可以省略,

82 if(params!=null){83 Iterator iter=params.entrySet().iterator();84 while(iter.hasNext()){85 Map.Entry entry=(Map.Entry) iter.next();86 request.addProperty((String) entry.getKey(),87 (String) entry.getValue());88 }89 }90 //3、生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述91 //SOAP协议的版本号可以从WebService的WSDL文档中查看到

92 SoapSerializationEnvelope envelope=newSoapSerializationEnvelope(SoapEnvelope.VER12);93 envelope.bodyOut =request;94 //c#写的应用程序必须加上这句

95 envelope.dotNet = true;96 //创建HttpTransportsSE对象。通过HttpTransportsSE类的构造方法可以指定WebService的WSDL文档的URL:

97 HttpTransportSE ht=newHttpTransportSE(WEB_SERVICE_URL);98 //使用call方法调用WebService方法

99 try{100 //Call方法的第一个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。

101 ht.call(null, envelope);102 } catch(HttpResponseException e) {103 e.printStackTrace();104 } catch(IOException e) {105 e.printStackTrace();106 } catch(XmlPullParserException e) {107 e.printStackTrace();108 }109 //使用envelope对象的getResponse方法获得WebService方法的返回结果

110 try{111 SoapPrimitive result=(SoapPrimitive) envelope.getResponse();112 if(result!=null){113 Log.i("--------收到的回复------",result+"");114 returnresult.toString();115 }116 } catch(SoapFault e) {117 Log.e("---------发生了错误---------", e.getMessage().toString());118 e.printStackTrace();119 }120 return null;121 }122

123 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值