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的主要内容,如果未能解决你的问题,请参考以下文章