2011-10-21 123 views
1

android的我收到以下錯誤:java.net.SocketException異常:地址家族不受協議支持

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

我的代碼試圖使用Web服務:

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); 

和異常信息是N ULL。 所有傳遞的參數都是正確的.AndroidManifest.xml也可以。

在登錄貓我得到這個異常: java.net.SocketException異常:地址家族不受協議支持

+1

什麼樣的例外是beeing拋出? –

+0

e.getmessaage()返回空.....我無法弄清楚這個例外......那就是主要問題 –

+1

它是否適用於使用HTTP而不是HTTPS的Endpoint? –

回答

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(); 
     } 
相關問題