Add*_*dev 18 java android android-volley
我正在使用volley检索无效网址的内容,即http://www.gigd32fdsu.com:这是我的测试代码:
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
final String url = "http://www.gigd32fdsu.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener() {
@Override
public void onResponse(Object response) {
// Display the first 500 characters of the response string.
mTextView.setText("Response is: " + response.toString().substring(0, 500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn't work! " + error.networkResponse.statusCode);
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到来自我的ISP的错误页面onResponse(String)的回调.如何检测HTTP状态代码以检测Web显示不正确?
谢谢
5er*_*5er 22
简单的解决方案是覆盖makeStringReq()中的parseNetworkResponse,不需要另一个类:
private void makeStringReq() {
showProgressDialog();
StringRequest strReq = new StringRequest(Method.GET,
Const.URL_STRING_REQ,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
msgResponse.setText(response.toString());
hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
}) {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
int mStatusCode = response.statusCode;
return super.parseNetworkResponse(response);
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
Run Code Online (Sandbox Code Playgroud)
我会让 VinceStyling 的回复更加完整。我会告诉你我在做什么。
覆盖此方法后,将 statusCode 保存在您的类中。
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
statusCode=response.statusCode;
return super.parseNetworkResponse(response);
}
Run Code Online (Sandbox Code Playgroud)
之后,您应该将其与 HttpURLConnection 常量进行比较以采取相应的行动。例如:
int statusCode=webService.getStatusCode();
switch (statusCode){
case HttpURLConnection.HTTP_OK:
//do stuff
break;
case HttpURLConnection.HTTP_NOT_FOUND:
//do stuff
break;
case HttpURLConnection.HTTP_INTERNAL_ERROR:
//do stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
只需重写parseNetworkResponse方法然后获取statusCode值即可。
public class StrImplRequest extends StringRequest {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
// take the statusCode here.
response.statusCode;
return super.parseNetworkResponse(response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23119 次 |
| 最近记录: |