我有一个名为SendPoints的方法,它允许用户向彼此发送点并且它正在工作。现在,如果事务不成功,我需要从服务器检索JSON格式的错误消息:
这些是重要的条款:
Service.java
@POST("/api/SendPoints")
Call<Void> SendPoints(@Body SendPoints SendPoints);
网络SDK类
NetworkSDK
public void SendPoints (SendPoints SendPoints, Callback<Void> callback){
Call<Void> call = BaseClient.getService().SendPoints(SendPoints);
call.enqueue(callback);
}
这是我需要检索的对象
public class ReturnMessage {
private String Message;
/**
*
* @return
* The Message
*/
public String getMessage() {
return Message;
}
/**
*
* @param Message
* The Message
*/
public void setMessage(String Message) {
this.Message = Message;
}
}
这是调用方法:
NetworkSDK.getInstance().SendPoints(Posiljka, new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
Log.d("Kartica", Posiljka.getCardNumber());
Log.d("Broj bodova", Posiljka.getAmount().toString());
Log.d("Response code:", "" + response.code());
if (response.code() == 200) {
Toast.makeText(getActivity(), "Points are sent !", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(getActivity(), "Points are not sent !", Toast.LENGTH_SHORT).show();
****Here i want to get toast messages that server will return ( server will return strings (-1,-2,-3,-4 etc and I need to write message for****
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
}
});
}catch (Exception e) {
Toast.makeText(getActivity(), "Error !", Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:0)
更改此方法
@POST("/api/SendPoints")
Call<Void> SendPoints(@Body SendPoints SendPoints);
通过声明Void
如果您希望服务器Call<String>
String
编辑:
您还可以通过以下方式获取HTTP响应标头:
@Override
public void onFailure(Call<Void> call, Throwable throwable) {
if (throwable instanceof HttpException) {
((HttpException) throwable).message(); // HTTP status message
((HttpException) throwable).code(); // HTTP status code
}
}
答案 1 :(得分:0)
至少有两种方法可以对待你所要求的东西。
SendPoints
中抛出异常并由ExceptionHandler [JAX-RS / Jersey how to customize error handling?转换就我个人而言,我可能更喜欢第一个方法,因为它可以帮助我构建代码并分发逻辑(我可以声明ExceptionHandler返回HttpStatus代码和响应体)。