2012-02-27 32 views
6

Ben Eclipse altında bir Android uygulamasından benim localhost POST isteği göndermeye çalışıyorum ama bu hatayı alıyorum:Android HTTP POST isteği hatası - soket başarısız EACCES (İzin reddedildi)

socket failed EACCES (Permission denied).

ben Bunu apache.commons kütüphanesinden yapıyorum. Daha önce HttpClient üzerinden bağlanacak şekilde denedim ama benzer bir hata oluştu:

public void onClick(View v) { 
     login = (EditText) findViewById(R.id.entry_login); 
     userLogin = login.getText().toString(); 

     pwd = (EditText) findViewById(R.id.entry_password); 
     userPwd = pwd.getText().toString(); 

     BufferedReader br = null; 

     HttpClient httpclient = new HttpClient(); 

     PostMethod method = new PostMethod("http://127.0.0.1/testPost.php"); 
     method.addParameter("name", "Arthur"); 

     System.out.println("Login: " + userLogin); 

     try { 
      httpclient.executeMethod(method); 

      int returnCode = httpclient.executeMethod(method); 

      if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) { 
       System.err.println("The Post method is not implemented by this URI"); 

       // Still consume the response body 
       method.getResponseBodyAsString(); 
      } 
      else { 
       br = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream())); 
       String readLine; 
       while (((readLine = br.readLine()) != null)) { 
        System.err.println(readLine); 
       } 
      } 

      /* List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("name", "Arthur")); 
       nameValuePairs.add(new BasicNameValuePair("OP_ID", "10001")); 
       nameValuePairs.add(new BasicNameValuePair("IP_ADDRESS", "127.0.0.1")); 
       nameValuePairs.add(new BasicNameValuePair("FIELDS=field100", userLogin + "&field101=" + userPwd)); 
       nameValuePairs.add(new BasicNameValuePair("REQ_TYPE=", "26")); 
      */ 

      System.out.println("http connection done well!"); 
      // response.getStatusLine(); 

     } 
     catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     finally { 
      method.releaseConnection(); 
      if (br != null) 
       try { 
        br.close(); 
       } 
       catch (Exception fe) { 

       } 
     } 
    } 
}); 

cevap

23

http://developer.android.com/guide/developing/devices/emulator.html#networkaddresses Eğer Manifest'inizde İNTERNET izinleri var mı? Aynı mesaj çıktı -

senin tavsiye için followinf hatları

<uses-permission android:name="android.permission.INTERNET" /> 
+0

Bir önceki hata mesajının iyi gitmesi konusunda tavsiyede bulunmuştum, ancak NullPointerException şu an fiili =), 1 noktası U. –

+0

Bir hata var FATAL İSTİSNASI: ana; android.os.NetworkOnMainThreadException; android.BlockGuardPolicy.onNetwork vb. Emulator hala soketler üzerinden istek engelleme olduğunu düşünüyorum ... –

+0

On NetworkOnMainThreadException On benim cevap burada görmek - http://stackoverflow.com/questions/9380166/fatal-exception-in-android/9380512#9380512 – Olegas

1

yerel makineye bağlanmak çalışıyorsunuz:

İşte

Connect to myhost refused.

kodudur? Ben 10.0.2.2

buraya bakın olmalıdır yerine 127.0.0.1 düşünüyorum:

+0

için teşekkürler AndroidManifest.xml, ama benim için çalışmalarını 't edin. Ayrıca diğer "gerçek" ana bilgisayarlara (yalnızca yerel değil) POST isteğinin nasıl gönderileceğini merak ediyorum. –

İlgili konular