) 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 void onPostExecute(String result) {
60 if (result != null) {
61 txtMsg.setText("服务器回复的信息 : " + result);
62 }
63 };
64
65 }.execute(params);
66 }
67
68 /**
69 *
70 * 调用WebService
71 * @return WebService 返回值
72 */
73 public String CallWebService(String MethodName, Mapparams) {
74 Log.i("--------进入调用CallWebService------","CallWebService");
75 //1、指定webservice的命名空间和调用的方法名
76 //SoapObject类的第一个参数表示WebService的命名空间,
77 //可以从WSDL文档中找到WebService的命名空间。第二个参数表示要调用的WebService方法名。
78 SoapObject request=new SoapObject(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=new SoapSerializationEnvelope(SoapEnvelope.VER12);
93 envelope.bodyOut = request;
94 // c#写的应用程序必须加上这句
95 envelope.dotNet = true;
96 //创建HttpTransportsSE对象。通过HttpTransportsSE类的构造方法可以指定WebService的WSDL文档的URL:
97 HttpTransportSE ht=new HttpTransportSE(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 return result.toString();
115 }
116 } catch (SoapFault e) {
117 Log.e("---------发生了错误---------", e.getMessage().toString());
118 e.printStackTrace();
119 }
120 return null;
121 }
122
123 }
当我在app中点击执行调用doHellow方法或者调用doEchoMessage方法时候程序报错,原因貌似是说在调用webService的时候异步线程中执行有误。报错截图如下: