【问题标题】:Why does Volley throw a time out exception in my case?为什么 Volley 在我的情况下会抛出超时异常?
【发布时间】:2016-10-23 11:53:11
【问题描述】:

怀疑类似于 Time out error volley

我正在使用 Localhost 实现登录注册屏幕 实现登录的 Button 的 onClick 监听器为

b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("lala","1");
         request=new StringRequest(Request.Method.POST, loginURL, new Response.Listener<String>() {
             @Override
             public void onResponse(String response) {
                 Log.d("lala","3");
                 try {
                     JSONObject jsonObject=new JSONObject(response);
                     boolean sucess=jsonObject.getBoolean("sucess");
                     if(sucess)
                     {
                         Toast.makeText(getApplicationContext(),jsonObject.getString("username").toString()+" Welcome",Toast.LENGTH_LONG).show();
                         Log.d("lala","4");
                     }
                     else
                     {
                         Toast.makeText(getApplicationContext()," Failed ",Toast.LENGTH_LONG).show();
                     }
                 } catch (JSONException e) {
                     Log.d("lala","5");
                     e.printStackTrace();
                 }
             }
         }, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError error) {
                 Log.d("lala","2");
                 Log.e("YOUR_APP_LOG_TAG", "I got an error", error);

             }
         }){
             @Override
             protected Map<String, String> getParams() throws AuthFailureError {
                 HashMap<String,String> hashMap= new HashMap<String, String>();
                hashMap.put("username",e1.getText().toString());
                 hashMap.put("password",e2.getText().toString());
                 return hashMap;

             }
         };

requestQueue.add(request);
        }
    });

我的登录网址也是

http://10.0.2.2/Login.php

PhP 工作正常,因为我已经使用 Postman 对其进行了尝试和测试。有人可以在这里指出我的错误吗?我找了又找,没找到。

【问题讨论】:

  • 当 volley 无法连接到服务器时会发生这种情况。这可能是因为您在手机中进行了一些代理设置。如果没有,请从您的手机网络浏览器检查此链接是否可访问。我怀疑不是。
  • 是的,不是。那么我没有办法使用本地主机并在那里托管我的数据库吗?
  • 在模拟器上运行代码就可以了

标签: php android android-volley timeoutexception


【解决方案1】:

您无法通过手机访问本地主机。它将尝试连接到 10.0.2.2,但找不到它,因为它在您的机器上运行,而不是在您的 Android 手机上运行。

我建议使用https://ngrok.com/download 之类的服务将您的本地 IP 地址转发到您可以通过手机访问的公共地址。

【讨论】:

    【解决方案2】:

    要实现您想要做的事情,您有以下选择:

    1. 在模拟器中运行您的代码而不做任何更改,它应该可以工作。
    2. 如果您想在手机上运行,​​请将 IP 地址更改为您 PC 的 IP 地址。 (将 10.0.2.2 更改为您 PC 的 IP 地址)

    更多详情可以看这里:

    https://futurestud.io/blog/how-to-run-an-android-app-against-a-localhost-api

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多