我使用API进行登录,如果登录成功,则返回带有响应的代码200。并且如果不正确的电子邮件或密码将返回带有json对象的代码401包含错误 问题是,即使图像中的请求代码不等于200,我也想获得网络响应,例如图像
但是凌空抛出异常 this.state = {
events:this.props.eventData.events,
}
static getDerivedStateFromProps(nextProps, prevState){
if(nextProps.eventData.events!==prevState.events){
return { events: nextProps.eventData.events};
}
else return null;
}
componentDidUpdate(prevProps, prevState) {
const {eventData} = this.props;
if(prevProps.eventData.events!==this.props.eventData.events){
//Perform some operation here
this.setState({events: eventData.events});
this.classMethod();
}
}
handleClickButton = (event, action) => {
const {eventData} = this.props;
axios.post(configs.Data.sendEvent, {events: event, key:eventData.key, action:action})//event here is a single event
.then(res=>{
this.setState({events:res.data.singleResult.dataEvent});
});
};
这是我的代码
BasicNetwork.performRequest: Unexpected response code 401
答案 0 :(得分:1)
VolleyError
具有networkResponse
属性,其中包含响应。
这是一个示例:String response = new String(error.networkResponse.data);
答案 1 :(得分:0)
在如下所示的newRequest()方法中简单地覆盖parseNetworkResponse
StringRequest request = new StringRequest(Method.GET,
<your url>,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//handle response
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//handle error
}
}) {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
int mStatusCode = response.statusCode;
return super.parseNetworkResponse(response);
}
};
答案 2 :(得分:0)
您可以从VolleyError
中提取响应数据。
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null && networkResponse.data != null) {
String jsonError = new String(networkResponse.data);
// Print Error!
}
}
答案 3 :(得分:0)
如果网络状态码不是4xx或5xx,则Volley在onErrorResponse
中以VolleyError
的形式返回响应。响应以字节数组形式接收,因此,您需要对其进行解析以读取错误和消息键。
下面是所需代码的修剪版本。
final String failAuthError = new String(volleyError.networkResponse.data, Charset.forName("UTF-8"));
ErrorResponse errorResponse = new Gson().fromJson(failAuthError, ErrorResponse.class);
Log.e(TAG, "Error Status: " + errorResponse.error);
Log.e(TAG, "Error Message: " + errorResponse.message);
和ErrorResponse
是具有error
和message
变量的自定义类。
class ErrorResponse {
@Expose
@SerializedName("error")
String error;
@Expose
@SerializedName("message")
String message;
}