java.net.SocketException:协议不支持的地址族

时间:2011-10-21 19:23:35

标签: java android web-services ksoap2 android-ksoap2

在Android中

我收到以下错误:

  

NativeStart.main(String [])line:not available [native method]

我的代码正在尝试使用webservices:

import java.io.IOException;

import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.app.*;
import android.content.Context;
import android.os.*;
import android.widget.TextView;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;


public class Project_InvokeServiceActivity extends Activity {
    /** Called when the activity is first created. */

     private static final String SOAP_ACTION = "http://tempuri.org/userg";

        private static final String METHOD_NAME = "userg";

        private static final String NAMESPACE = "http://tempuri.org/";
        private static final String URL = "https://amaman.NewService/Permissions.asmx";
       // TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       // tv=(TextView)findViewById(R.id.text1);
       // call();

             TextView tv = new TextView(this);




                 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                 request.addProperty("username", "222222");

            request.addProperty("ID", "123");



            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;

            envelope.setOutputSoapObject(request);

            setContentView(tv);

            try { HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            tv.setText("t");

            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();

            if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                tv.setText("connected"+netInfo.getExtraInfo());
            }
            else{
            tv.setText("not conn");
            }


            try{


                androidHttpTransport.call(SOAP_ACTION, envelope);

                tv.setText("t1");
            }catch(Exception e){
                //tv.setText(e.getClass().getName());
                }



           // tv.setText("inside2");


            Object result = (Object)envelope.getResponse();


    } catch (Exception e2) {
        // TODO Auto-generated catch block
        //e.printStackTrace();
        TextView tv5 = new TextView(this);
        //tv3.setText(e1.getMessage());
       // tv.setText(result.toString());

        tv5.setText("exception"+e2.getClass()+"xxx");
        setContentView(tv);
    }

           // tv.setText(result.toString());
          //  tv.setText("inside");

          //  setContentView(tv);




    }

我的程序正在连接到互联网....但它在下面的行中抛出异常:

androidHttpTransport.call(SOAP_ACTION, envelope);

并且异常messege为NULL。 传递的所有参数都是正确的.AndroidManifest.xml也没问题。

在Log Cat中我收到此异常: java.net.SocketException:协议不支持的地址族

1 个答案:

答案 0 :(得分:5)

尝试将此添加到AndroidManifest.xml中:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

您还需要捕获此异常:

 catch(SocketException ex)
       {
         Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
           ex.printStackTrace();
       }