java - Volley 在模拟器上运行但在设备上失败

标签 java android android-volley

我有一台 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);
    }
}  

任何帮助将不胜感激。谢谢!

最佳答案

如果您想使用本地服务器,您应该使用您的网络内 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/";

关于java - Volley 在模拟器上运行但在设备上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550703/

相关文章:

PHP 代码返回错误代码 500。出了什么问题?

java - Android-volley:如何获取字符串响应值并将其分配到 volley StringRequest 方法之外?

java - ResourceHandler 与 Controller 中的通配符冲突

java - Jersey - 声明性超链接 - 在代码配置中

java - Android 适配器因 ArrayIndexOutOfBoundsException 崩溃

android - Volley - 直接下载到文件(没有内存字节数组)

java - bcprov 和 bcprov-ext 有何不同?

java - 线程执行器不工作 Spring 批处理

android - 膨胀类 android.support.v7.widget.AppCompatTextView 时出错

android - Flutter本地通知onSelectNotification点击本地通知时无法打开新页面