问题
i want to convert the Response in to JSON and show it to the User .I was able to display 200 response but in 202,i am failed.
{
Log.d(TAG, "RESPONSE CODE" + response.code());
if (response.code() == 200) {
Gson gson = new Gson();
SuccessResponse signupResponse = response.body();
String sSignupResponse = gson.toJson(signUpResponse, SuccessResponse.class);
try {
} catch (JSONException e) {
e.printStackTrace();
}
} else if (response.code() == 202) {
Log.d(TAG,"RESPONSE CODE IS "+"202 RIGHT");
Gson gson = new Gson();
SuccessResponse signupResponse = response.body();
Log.d(TAG,"WHAT IS sSignupResponse"+signupResponse.toString());
String sSignupResponse = gson.toJson(signUpResponse.toString());
Log.d(TAG,"WHAT IS sSignupResponse"+sSignupResponse.toString());
try {
JSONObject jsonObject=new JSONObject(sSignupResponse);
Log.d(TAG,"WHAT IS jsonObject"+jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
//request not successful (like 400,401,403 etc)
//Handle errors
Converter<ResponseBody, ErrorResponse> converter = ApiClient.getRetrofit().responseBodyConverter(ErrorResponse.class, new Annotation[0]);
try {
ErrorResponse errors = converter.convert(response.errorBody());
dialogUtil.showOkDialog(errors.getMessage().toString());
} catch (Exception e) {
dialogUtil.showOkDialog(e.getMessage().toString());
}
}
}
should i do the same for 202 too? i created another POJO like ErrorResponse with message and code ,replaced the SuccessRespone with ErrorResponse
回答1:
try this:
String sSignupResponse = gson.toJson(signUpResponse);
instead of
String sSignupResponse = gson.toJson(signUpResponse, SuccessResponse.class);
回答2:
200 (OK), 201(Created - when you insert something in server database) and 204(No content - server has processed your request and it don't return nothing instead) are corect. Check here for all response codes in HTTP/1.1
回答3:
You can take a look at REST
response
code HERE
If response
code
is match with format 2xx
, that means success.
So, in you case you should check response.isSuccessful()
to check if the response
is success
or not instead of check response
code by manual
回答4:
I got an answer,Just do like this .You know upfront the 202 Response.So make a POJO class Response202.Now let SuccessResponse Class inherit the properties of Response Class.You are done now
SuccessResponse response202 = response.body();
Gson gson202 = new Gson();
String json202Str = gson202.toJson(response202, SuccessResponse.class);
来源:https://stackoverflow.com/questions/43673957/response-in-202-status-in-retrofit2-0