Android調用.NET WebService 的注意事項!
網上有些資料說在需要傳入多個參數時,只要多個參數的順序與WSDL中參數出現的順序一致即可,名稱並不需要和WSDL中的一致,但實際測試發現,大多數情況下並不可行!)
// 調用的方法String methodName = "GetGoodsSet_Android";// 建立HttpTransportSE傳輸對象HttpTransportSE ht = new HttpTransportSE("http://192.168.1.115/Android_WebService/WebService1.asmx");ht.debug = true;// 執行個體化SoapObject對象SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);// 添加一個請求參數soapObject.addProperty("queryPara", queryPara);soapObject.addProperty("pagesze", PageSize);// 使用SOAP1.1協議建立Envelop對象SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = soapObject;// 設定與.Net提供的Web Service保持較好的相容性envelope.dotNet = true;try{// 調用Web Serviceht.call("http://tempuri.org/GetGoodsSet_Android", envelope);//Log.println(priority, tag, msg)if (envelope.getResponse() != null){// 擷取伺服器響應返回的SOAP訊息SoapObject result = (SoapObject)envelope.bodyIn; //SoapPrimitive result_P = (SoapPrimitive) envelope.getResponse(); //DialogUtil.showDialog(Main,WebServiceUtil.getCityListByProvince(), false);System.out.println(result.getAttributeCount());//SoapObject detail = (SoapObject) result.getProperty(methodName//+ "Result");// 解析伺服器響應的SOAP訊息。//return parseProvinceOrCity(detail);//SoapObject chileds =(SoapObject) result.getProperty(0);//SoapObject chiled_s =(SoapObject) chileds.getProperty(1);//JSONObject js_obj=new JSONObject(envelope.getResponse().toString());return envelope.getResponse().toString();}else{return "Null";}}catch (IOException e){e.printStackTrace();return e.getLocalizedMessage();}catch (XmlPullParserException e){e.printStackTrace();return e.getLocalizedMessage();}