Chirag7691 Ответов: 2

мой веб-сервис не вызывается из andriod, вызывая исключение networkonmainthreadexception


 package com.example.test;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.*;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE;


public class MainActivity extends Activity {

	 /** Called when the activity is first created. */
    
    private static String SOAP_ACTION = "http://tempuri.org/HelloWorld";
    private static String NAMESPACE = "http://tempuri.org/";
    private static String METHOD_NAME = "HelloWorld";
    private static String URL = "http://117.227.58.74/vehicle//WebService.asmx";
    String weight = "77";
    String fromUnit = "78";

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

    //tv =(TextView)findViewById(R.id.textView1);
        
        
    
    SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
    
    PropertyInfo weightProp =new PropertyInfo();
    weightProp.setName("lat");
    weightProp.setValue(weight);
    weightProp.setType(double.class);
    Request.addProperty(weightProp);
     
    PropertyInfo fromProp =new PropertyInfo();
    fromProp.setName("log");
    fromProp.setValue(fromUnit);
    fromProp.setType(double.class);
    Request.addProperty(fromProp);
   
    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);    
    soapEnvelope.dotNet = true;
    soapEnvelope.setOutputSoapObject(Request);
    Toast.makeText(getBaseContext(),"1",Toast.LENGTH_LONG).show();
    HttpTransportSE aht = new HttpTransportSE(URL);
    try 
    {
    	Toast.makeText(getBaseContext(),"2",Toast.LENGTH_LONG).show();
    	aht.call(SOAP_ACTION, soapEnvelope);
    	Toast.makeText(getBaseContext(),"3",Toast.LENGTH_LONG).show();
    	SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();
    	Toast.makeText(getBaseContext(),"4",Toast.LENGTH_LONG).show();
    	 //Log.i("myApp", response.toString());
    	//tv.setText("Status:" + resultString);
    	
    	
    } catch (Exception e)
    	
    {
    
    	e.printStackTrace(); 
    
   	   }

    }
}

Sudhakar Shinde

Пожалуйста, предоставьте полную трассировку ошибок.

Chirag7691

трассировка ошибок
<pre>04-01 23:46:20.652: I/System.out(1019): ошибка
04-01 23:46:20.652: W/System.err(1019): android.os.NetworkOnMainThreadException
04-01 23:46:20.662: W/System.err(1019): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
04-01 23:46:20.662: W/System.err(1019): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
04-01 23:46:20.662: W/System.err(1019): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
04-01 23:46:20.662: W/System.err(1019): at libcore.io.IoBridge.connect(IoBridge.java:112)
04-01 23:46:20.672: W/System.err(1019): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
04-01 23:46:20.672: W/System.err(1019): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
04-01 23:46:20.672: W/System.err(1019): at java.net.Socket.connect(Socket.java:842)
04-01 23:46:20.672: W/System.err(1019): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
04-01 23:46:20.672: W/System.err(1019): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-01 23:46:20.702: W/System.err(1019): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
04-01 23:46:20.702: W/System.err(1019): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
04-01 23:46:20.715: W/System.err(1019): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-01 23:46:20.715: W/System.err(1019): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
04-01 23:46:20.722: W/System.err(1019): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
04-01 23:46:20.722: W/System.err(1019): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
04-01 23:46:20.733: W/System.err(1019): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
04-01 23:46:20.733: W/System.err(1019): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
04-01 23:46:20.742: W/System.err(1019): at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46)
04-01 23:46:20.742: W/System.err(1019): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68)
04-01 23:46:20.742: W/System.err(1019): at com.example.test.В MainActivity.метод onCreate(класс MainActivity.Ява:71)
04-01 23:46:20.742: Ж/Системы.ошибаться(1019): на Андроид.приложение.Деятельности.performCreate(деятельности.Ява:5008)
04-01 23:46:20.752: Ж/Системы.ошибаться(1019): на Андроид.приложение.Контрольно-измерительные приборы.callActivityOnCreate(контрольно-измерительные приборы.Ява:1079)
04-01 23:46:20.752: W/System.err(1019): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
04-01 23:46:20.762: W/System.err(1019): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-01 23:46:20.762: W/System.err(1019): at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-01 23:46:20.762: W/System.err(1019): at android.app.ActivityThread$H. handleMessage(ActivityThread.java:1195)
04-01 23:46:20.762: W/System.err(1019): at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 23:46:20.762: W/System.err(1019): at android.os.Looper.loop(Looper.java:137)
04-01 23:46:20.772: W/System.err(1019): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-01 23:46:20.772: W/System.err(1019): at java.lang.reflect.Метод.invokeNative(родной метод)
04-01 23:46:20.772: W/System.err(1019): at java.lang.reflect.Method.invoke(Method.java:511)
04-01 23:46:20.784: W/System.err(1019): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-01 23:46:20.784: W/System.err(1019): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-01 23:46:20.784: W/System.err(1019): at dalvik.system.NativeStart.main(Native Method)
04-01 23:46:21.122: я/хореограф(1019): пропущено 53 кадра! Приложение может выполнять слишком много работы в своем основном потоке.</pre>

Member 9404848

Привет я думаю у меня есть решение, пожалуйста, попробуйте его в Android смартфоне или планшете пока создание

apk...я думаю, что это сработает...потому что когда я пытаюсь запустить простой веб-сервис

пример в эмуляторе он выдает такое же исключение но когда я пробую его в синем цвете

стек это работает отлично .... попробуйте это Чака.. :-)

2 Ответов

Рейтинг:
9

Member 9958511

Пожалуйста, вызовите свои веб-сервисы в потоке, в android его лучше вызвать в AsynTask, doInBackground()


Рейтинг:
0

Member 13477246

Используйте этот код в методе "onCreate()"


//////////////////////////////////////////////////////////////////////////////////

пробовать {
если(андроид.ОС.Построить.Версия.SDK_INT>9)
{
Строгий режим.Политика ThreadPolicy=новый StrictMode.ThreadPolicy.Строитель().permitAll().построить();
StrictMode.setThreadPolicy(политика);
}

} catch (исключение e) {
// TODO: обрабатывать исключение
}