2017-04-21 2 views
0

LG G3을 사용하고 앱을 실행할 때 Volley가 작동하지 않습니다. 내가하고있는 모든 일은 내 로컬 서버에 게시물 요청을 보내고 완벽하게 에뮬레이터에서 작동하지만 장치에서 실패합니다. 내가 얻는 오류는 타임 아웃 오류입니다. 코드는 다음과 같습니다.발리는 에뮬레이터에서 실행되지만 장치에서는 오류가 발생합니다.

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

의 사용 가능한 복제 (HTTP [USB에서 PC의 로컬 호스트 액세스는 안드로이드 모바일 장치를 연결] : // 유래 .com/questions/9887621/accessible-localhost-of-pc-from-usb-connected-android-mobile-devi ce) – Bryan

+0

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

답변

0

당신은 예를 192.168.1.105 대신 로컬 IP 주소 (10.0.2.2 - 127.0.0.1 - 등)에 대한 .... 당신이 당신의 네트워크 IP를 사용해야합니다 로컬 서버에서 작동하려면

그래서 ... 그냥 다음 ipconfig/all 등을 사용하면 PC의 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 failed : EHOSTUNREACH (호스트에 연결되지 않음) –

+0

가상 서버 (xammp/wamp)를 확인하십시오. ... 로컬 브라우저를 통해 액세스 할 수 있습니까? –

+1

오류가 발견되었습니다. 감사합니다. 문제는 방화벽이있는 포트 8000에 연결하려고했기 때문입니다. 그래서 내가해야만하는 것은 포트를 다른 포트로 바꾸는 것뿐이었습니다. –

관련 문제