Note that there are some explanatory texts on larger screens.

plurals
  1. POandroid.os.NetworkOnMainThreadException for webservice (ksoap)
    primarykey
    data
    text
    <p>I am new to android programming and trying to use webservice in this sample program:</p> <p>I use Android 4.1 and my IDE is Eclipse Juno. I think the programming part is ok, but may be there is a problem about connecting. </p> <pre><code>package com.example.webserviceexample; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { final static String NAMESPACE = "http://tempuri.org/"; final static String METHOD_NAME = "CelsiusToFahrenheit"; final static String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; final static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx"; TextView sonuc; EditText deger; Button hesapla; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); deger = (EditText) findViewById(R.id.deger); sonuc = (TextView) findViewById(R.id.flag); hesapla = (Button) findViewById(R.id.hesapla); hesapla.setOnClickListener(new OnClickListener() { public void onClick(View v) { //request info SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); Request.addProperty("Celcius",deger.getText().toString()); //envelope SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); soapEnvelope.dotNet = true; //.NET = true, php = false //putting request to the envelope soapEnvelope.setOutputSoapObject(Request); //transferring data HttpTransportSE aht = new HttpTransportSE(URL); //prepare //start try { aht.call(SOAP_ACTION, soapEnvelope); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } //waiting and getting response. String result; try { // we are creating SoapPrimitive Object as waiting for simple variable. result = "Fahrenheit:" + soapEnvelope.getResponse(); //writing the result to the textView sonuc.setText(result); } catch (SoapFault e) { e.printStackTrace(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } </code></pre> <p>However, I get this error:</p> <pre><code>08-15 11:45:26.294: E/AndroidRuntime(641): FATAL EXCEPTION: main 08-15 11:45:26.294: E/AndroidRuntime(641): android.os.NetworkOnMainThreadException 08-15 11:45:26.294: E/AndroidRuntime(641): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 08-15 11:45:26.294: E/AndroidRuntime(641): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 08-15 11:45:26.294: E/AndroidRuntime(641): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 08-15 11:45:26.294: E/AndroidRuntime(641): at java.net.InetAddress.getAllByName(InetAddress.java:214) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpConnection.&lt;init&gt;(HttpConnection.java:70) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpConnection.&lt;init&gt;(HttpConnection.java:50) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 08-15 11:45:26.294: E/AndroidRuntime(641): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 08-15 11:45:26.294: E/AndroidRuntime(641): at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:76) 08-15 11:45:26.294: E/AndroidRuntime(641): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:146) 08-15 11:45:26.294: E/AndroidRuntime(641): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 08-15 11:45:26.294: E/AndroidRuntime(641): at com.example.webserviceexample.MainActivity$1.onClick(MainActivity.java:61) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.view.View.performClick(View.java:4084) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.view.View$PerformClick.run(View.java:16966) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.os.Handler.handleCallback(Handler.java:615) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.os.Handler.dispatchMessage(Handler.java:92) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.os.Looper.loop(Looper.java:137) 08-15 11:45:26.294: E/AndroidRuntime(641): at android.app.ActivityThread.main(ActivityThread.java:4745) 08-15 11:45:26.294: E/AndroidRuntime(641): at java.lang.reflect.Method.invokeNative(Native Method) 08-15 11:45:26.294: E/AndroidRuntime(641): at java.lang.reflect.Method.invoke(Method.java:511) 08-15 11:45:26.294: E/AndroidRuntime(641): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 08-15 11:45:26.294: E/AndroidRuntime(641): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 08-15 11:45:26.294: E/AndroidRuntime(641): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>So what can be the problem?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload