2013-05-14 71 views
0

我正在关注此tutorial。这是非常直接的,我喜欢它,但它在仿真器上崩溃。我无法捕捉到错误。我不明白这个问题。这是一段代码。android ksoap2崩溃,我不能赶上它

private final String NAMESPACE = "http://www.webserviceX.NET/"; 
private final String URL = "http://www.webservicex.net/ConvertWeight.asmx"; 
private final String SOAP_ACTION = "http://www.webserviceX.NET/ConvertWeight"; 
private final String METHOD_NAME = "ConvertWeight"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    String weight = "3700"; 
    String fromUnit = "Grams"; 
    String toUnit = "Kilograms"; 


    PropertyInfo weightProp =new PropertyInfo(); 
    weightProp.setName("Weight"); 
    weightProp.setValue(weight); 
    weightProp.setType(double.class); 
    request.addProperty(weightProp); 

    PropertyInfo fromProp =new PropertyInfo(); 
    fromProp.setName("FromUnit"); 
    fromProp.setValue(fromUnit); 
    fromProp.setType(String.class); 
    request.addProperty(fromProp); 

    PropertyInfo toProp =new PropertyInfo(); 
    toProp.setName("ToUnit"); 
    toProp.setValue(toUnit); 
    toProp.setType(String.class); 
    request.addProperty(toProp); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try { 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
     Log.i("myApp", response.toString()); 

     TextView tv = new TextView(this); 
     tv.setText(weight+" "+fromUnit+" equal "+response.toString()+ " "+toUnit); 
     setContentView(tv); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

您认为问题是什么?我下载了ksoap2库并包含在该项目中。我在我的真实设备上也尝试过它,它可以工作。我还启用了配置文件上的互联网访问。

任何帮助将是伟大的。或者你可以建议另一个教程?

+0

使用的AsyncTask。您正在主UI线程上执行与网络相关的操作。 – Raghunandan 2013-05-14 18:11:12

+0

是教程错误?你能否提出另一个小提琴? – 2013-05-14 18:13:51

+0

对于蜂窝和以后是的,你会得到异常http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html – Raghunandan 2013-05-14 18:15:08

回答

1

Android 3.0的后,您不能在活动的主线程访问Web,你需要开始新的线程来访问Web