2017-04-21 26 views
0

私はLG G3を使用していますが、アプリケーションを実行するとVolleyは動作しません。私がやっているのは、自分のローカルサーバーに投稿要求を送信することです。エミュレータでは完全に動作しますが、デバイスでは失敗します。私が得るエラーは、タイムアウトエラーです。ここにコード: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のローカルホストへのアクセスは、Androidモバイルデバイスを接続]:// stackoverflowの.com/questions/9887621 /アクセス-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​​に接続しようとしていることでした。だから私がしなければならなかったのは、ポートを別のポートに変更することだけでした。 –

関連する問題