2017-04-21 132 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端口。所以我所要做的就是将端口更改为另一个端口并且工作。 –

相关问题