排气在模拟器上运行,但在设备上失败
我有一个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);
}
}
任何帮助将非常感激。谢谢!
如果你想,你应该用你的网内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/";
感谢您的答案,但我现在得到一个新的错误:com .android.volley.NoConnectionError:java.net.ConnectException:5000ms后无法连接到/192.168.xx(端口8000):isConnected失败:EHOSTUNREACH(没有路由到主机) –
检查您的虚拟服务器(xammp/wamp).. ...你可以通过本地浏览器访问吗? –
我发现了错误,谢谢!问题是我试图连接到有防火墙的8000端口。所以我所要做的就是将端口更改为另一个端口并且工作。 –
凌空不提供本地接入 – user6313669
的可能的复制[访问来自USB PC的本地主机连接的Android移动设备(HTTP://计算器的.com /问题/ 9887621 /访问-本地主机 - 的-PC-从-USB连接-机器人的移动 - 叠维ce) – Bryan
请参阅http://stackoverflow.com/questions/4779963/how-can-i-access-my-localhost-from-my-android-device – user6313669