看板 AndroidDev 關於我們 聯絡資訊
以下是我程式碼 public class MainActivity extends Activity { ///手机归属地Webservice的参数信息 private static final String nameSpace = "http://192.168.1.104/SOAP"; private static final String urlAddress = "http://192.168.1.104/SOAP/soapclient4.php?wsdl"; private static final String methodName = "greet"; private static final String soapActionAddress = "http://192.168.1.104/SOAP/greet"; private TextView telAddress = null; private EditText tel = null; private Button btnAddress = null; private String txtAddress = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAddress = (Button) this.findViewById(R.id.btnSearchAddress); telAddress = (TextView) this.findViewById(R.id.telAddress); tel = (EditText) this.findViewById(R.id.telNo); btnAddress.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { public void run() { getTelAddress(); } }).start(); } }); } public void getTelAddress() { SoapObject soapObject = new SoapObject(nameSpace, methodName); soapObject.addProperty("name", "Joyce"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER10); envelope.bodyOut = soapObject; envelope.dotNet = true; envelope.setOutputSoapObject(soapObject); System.out.println("Soap Name : " + soapObject.getProperty("name")); HttpTransportSE httpTransportSE = new HttpTransportSE(urlAddress); httpTransportSE.debug = true; try { httpTransportSE.call(soapActionAddress, envelope); System.out.println("request xml after: " + httpTransportSE.responseDump); if(envelope.bodyIn != null) { SoapObject object = (SoapObject) envelope.bodyIn; txtAddress = object.getProperty(0).toString(); handlerAddress.sendEmptyMessage(0); telAddress.setText(txtAddress); telAddress.setTextColor(0xFFFF00); telAddress.setTextSize(100); } else { telAddress.setText("No Response"); telAddress.setTextColor(0xFF0000); telAddress.setTextSize(50); } } catch (Exception e) { e.printStackTrace(); } 程式是在httpTransportSE.call(soapActionAddress, envelope); 報錯了 想知在這樣是什麼錯誤? 還有如何trace取得主機回下來的xml資料?謝謝 Log 如下 I: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb I: Initialized EGL, version 1.4 I: Soap Name : Joyce W: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT Result = Hello S...@1:21 in java.io.InputStreamReader@f4242c9) W: at org.kxml2.io.KXmlParser.next(KXmlParser.java:432) W: at org.kxml2.io.KXmlParser.next(KXmlParser.java:313) W: at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:2048) W: at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:127) W: at org.ksoap2.transport.Transport.parseResponse(Transport.java:129) W: at org.ksoap2.transport.HttpTransportSE.parseResponse(HttpTransportSE.java:301) W: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:274) W: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) W: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) W: at com.airlink.soaptest.MainActivity.getTelAddress(MainActivity.java:66) W: at com.airlink.soaptest.MainActivity$1$1.run(MainActivity.java:43) W: at java.lang.Thread.run(Thread.java:818) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.2.48 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1454058706.A.880.html
MIM23: 記得網路連線不能在UI Thread上操作 01/30 05:49
MIM23: 看到了… 有開執行緒,有給網路權限嗎? 01/30 06:07
joycece: 有喔 不然會連都建立不起來 01/30 08:35
joycece: <uses-permission android:name="android.permission.INT 01/30 08:43
joycece: 會連socket都建立不起來(補充推文) 01/30 09:08
tryagainloop: http://goo.gl/TRHio1 把server的BOM header 拿掉 02/15 11:27