2017-04-21 187 views
0

我有一個LG G3,當我運行我的應用程序時,排氣失敗。我所做的只是發送一個post請求到我的本地服務器,它在模擬器上完美工作,但在設備上失敗。我得到的錯誤是超時錯誤。這裏是代碼:排氣在模擬器上運行,但在設備上失敗

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button button = (Button) findViewById(R.id.button); 
     final TextView textview = (TextView) findViewById((R.id.test)); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       sendRequest("example", "0", "0", "0", "0", "0", "0"); 

      } 
     }); 
    } 


    public void sendRequest(final String location, final String mood, final String gender, final String age, 
          final String day, final String month, final String year) { 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     String url = "http://10.0.2.2:8000/polls/add/"; 

     StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         Toast.makeText(MainActivity.this, "works", Toast.LENGTH_SHORT).show(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(MainActivity.this, "Error is: " + error.toString(), 
         Toast.LENGTH_LONG).show(); 
       Log.e("VOLLEY", error.toString()); 
      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> parameters = new HashMap<>(); 
       parameters.put("age", age); 
       parameters.put("location", location); 
       parameters.put("mood", mood); 
       parameters.put("gender", gender); 
       parameters.put("day", day); 
       parameters.put("month", month); 
       parameters.put("year", year); 
       return parameters; 
      } 

      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String, String> params = new HashMap<>(); 
       params.put("Content-Type", "application/x-www-form-urlencoded"); 
       return params; 
      } 
     }; 
     requestQueue.add(stringRequest); 
    } 
} 

任何幫助將非常感激。謝謝!

+0

凌空不提供本地接入 – user6313669

+0

的可能的複製[訪問來自USB PC的本地主機連接的Android移動設備(HTTP://計算器的.com /問題/ 9887621 /訪問-本地主機 - 的-PC-從-USB連接-機器人的移動 - 疊維ce) – Bryan

+0

請參閱http://stackoverflow.com/questions/4779963/how-can-i-access-my-localhost-from-my-android-device – user6313669

回答

0

如果你想,你應該用你的網內IP的本地服務器工作....例如192.168.1.105,而不是本地IP地址(10.0.2.2 - 127.0.0.1 - 等)

所以...只是使用ipconfig/all,然後找到你計算機的IP地址:

String url = "http://192.168.1.105:8000/polls/add/"; 
+0

感謝您的答案,但我現在得到一個新的錯誤:com .android.volley.NoConnectionError:java.net.ConnectException:5000ms後無法連接到/192.168.xx(端口8000):isConnected失敗:EHOSTUNREACH(沒有路由到主機) –

+0

檢查您的虛擬服務器(xammp/wamp).. ...你可以通過本地瀏覽器訪問嗎? –

+1

我發現了錯誤,謝謝!問題是我試圖連接到有防火牆的8000端口。所以我所要做的就是將端口更改爲另一個端口並且工作。 –

相關問題