Android-Volley:尝试从真实设备连接时出现 TimeOutError

Posted

技术标签:

【中文标题】Android-Volley:尝试从真实设备连接时出现 TimeOutError【英文标题】:Android-Volley: TimeOutError when trying to connect from a real device 【发布时间】:2018-08-04 21:03:45 【问题描述】:

例如,我无法让我的设备从本地服务器获取数据,即使我已经搜索过类似的问题并尝试了所有方法。

这是我在 Laravel 中的代码:

web.php

   Route::get('/test', function()
 return Subject::all(); );

主题.php:

class Subject extends Model

    protected $table='subjects';
    protected $primary_key='subjectid'; 

    public $timestamps=false;

主活动:

public class MainActivity extends AppCompatActivity implements Button.OnClickListener 

Button btn;
TextView textview;
String url = "http://192.168.1.*:80/test";

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textview = (TextView)findViewById(R.id.txt);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(this);


@Override
public void onClick(View view)

    switch(view.getId())
    
        case R.id.btn:

            final RequestQueue request = Volley.newRequestQueue(MainActivity.this);

            StringRequest string = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() 
                @Override
                public void onResponse(String response)
                
                        textview.setText(response);
                        Log.d("response", response);
                
            , new Response.ErrorListener() 
                @Override
                public void onErrorResponse(VolleyError error)
                
                    Toast.makeText(getApplicationContext(), "An error has ocurred!", Toast.LENGTH_SHORT);
                    error.printStackTrace();
                    request.stop();
                
            
            );

            request.add(string);

            break;
    

这是错误:

W/System.err:com.android.volley.TimeoutError W/System.err:在 com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:169) W/System.err:在 com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) W/System.err:在 com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)

我的设备和笔记本电脑都连接到同一个 WLAN;我为端口 80 和 443(我想是 TCP)添加了一条规则 - 我尝试禁用我的防火墙,唉,它起作用了,我的字符串被提取了!然而,这是一种冒险和可怕的做法...... 如果可能的话,我想知道这个问题的解决方案,我还需要配置什么?谢谢!

【问题讨论】:

是否获得互联网许可?? 忘了说是的,它是在清单中声明的​​。另外,我正在使用 API 19。 服务器上的一些错误,响应不是来自服务器,检查 url 或服务器端代码 【参考方案1】:

在 request.add(string) 之前在您的 volley request 中添加以下代码以更改超时时间。

request.setRetryPolicy(new DefaultRetryPolicy(
        5000, 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

【讨论】:

时间限制似乎可以解决我的问题,非常感谢!

以上是关于Android-Volley:尝试从真实设备连接时出现 TimeOutError的主要内容,如果未能解决你的问题,请参考以下文章

从真实设备运行时,android应用程序不幸停止了

将 Flutter 连接到真实设备中的 localhost 服务器

将 api 与真实设备颤振连接起来

应用程序在连接的真实设备上工作,但不是 APK

当我在真实设备中打开活动时应用程序崩溃

以真实设备为目标时,无法在 IOS 中构建 react-native