我在Android developer guidelines
之后实施了一个简单的齐射自定义请求GsonRequest<FlickrResponsePhotos> gsonObjRequest = new GsonRequest<>(myRequest.getRequestMethodType(), myRequest.getApiUrl(),
FlickrResponsePhotos.class, null, new Response.Listener<FlickrResponsePhotos>() {
@Override
public void onResponse(FlickrResponsePhotos response) {
parseResponse(response)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle your error types accordingly.For Timeout & No connection error, you can show 'retry' button.
// For AuthFailure, you can re login with user credentials.
// For ClientError, 400 & 401, Errors happening on client side when sending api request.
// In this case you can check how client is forming the api and debug accordingly.
// For ServerError 5xx, you can do retry or handle accordingly.
if (error instanceof NetworkError) {
} else if( error instanceof ServerError) {
} else if( error instanceof AuthFailureError) {
} else if( error instanceof ParseError) {
} else if( error instanceof NoConnectionError) {
} else if( error instanceof TimeoutError) {
}
}
});
我查看了Flickr Api中的错误代码,例如flickr.commons.getInstitutions,寻找解决方案来处理它们。
在[GsonRequest]类中,我们有一个名为parseNetworkResponse的方法:
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
我刚刚将无效的Flickr API密钥传递给了我的网址,我期望NetworkResponse
状态代码为100,但我仍然在上面的方法中得到200!
然后我想知道在使用Volley时如何处理为每种方法指定的Flickr错误代码?