当前位置: 首页 > 知识库问答 >
问题:

如果post请求的响应与post类不同,如何从post请求获得响应

华衡
2023-03-14
    Call<LoginPost> call = apiLink.loginUser(useremail, userpassword);

    call.enqueue(new Callback<LoginPost>() {
        @Override
        public void onResponse(Call<LoginPost> call, Response<LoginPost> response) {
            if(!response.isSuccessful()){
                String code = Integer.toString(response.code());
                Toast.makeText(LoginPage.this, code, Toast.LENGTH_LONG).show();
            }
            else {
             LoginPost postResponse = response.body();

             Log.e("viewResponse", 
                   postResponse.getSuccessResponse().toString());

               return;
            }
        }

        @Override
        public void onFailure(Call<LoginPost> call, Throwable t) {
            Log.e("error in createNewUser",  t.getMessage());
        }
    });
@SerializedName("email")
String userEmail;


@SerializedName("password")
String userPassword;

public JSONObject getSuccessResponse() {
    return successResponse;
}

@SerializedName("success")
JSONObject successResponse;


public String getUserEmail() {
    return userEmail;
}


public String getUserPassword() {
    return userPassword;
}

共有1个答案

欧阳正谊
2023-03-14

在进行referfit调用时,应该使用与响应匹配的POJO类,而不是对请求使用POJO类。因为这只是使用参数进行调用,所以您可能甚至不需要一个请求对象,但是有一个也没有坏处。

您的代码如下所示:

Call<LoginResponse> call = apiLink.loginUser(useremail, userpassword);

call.enqueue(new Callback<LoginResponse>() {
    @Override
    public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
        if(!response.isSuccessful()){
            String code = Integer.toString(response.code());
            Toast.makeText(LoginPage.this, code, Toast.LENGTH_LONG).show();
        }
        else {
         LoginResponse postResponse = response.body();

         Log.e("viewResponse", 
               postResponse.getSuccessResponse().toString());

           return;
        }
    }

    @Override
    public void onFailure(Call<LoginResponse> call, Throwable t) {
        Log.e("error in createNewUser",  t.getMessage());
    }
});

为了进一步解释发生了什么,当您创建参数化调用时,您需要告诉Registfit使用哪个对象来解析响应(如果您想使用一个对象作为post正文数据,您需要以不同的方式声明API):

 @POST("auth/login")
 Call<LoginResponse> loginUser(@Body LoginPost body);

 Call<LoginResponse> call = apiLink.loginUser(LoginPost body);
 类似资料:
  • 我一直试图向facebook发送HTTP POST请求,但没有成功。我从服务器收到以下响应: HTTP/1.1 400不良请求内容-类型:text/html;charset=utf-8日期:2016年12月10日星期六21:28:17 GMT连接:关闭内容-长度:2959 Facebook |错误 抱歉,出了点问题,我们正在修理,会尽快修好的 我的密码 我做错了什么?

  • 问题内容: 我有一个包含表单(帖子)的html。单击某些提交按钮时,我会收到JSON响应。 如何获取此JSON? 如果我不截取请求,则json将显示在Web视图上,所以我想应该使用(我正在使用API​​ 12),但是我不知道如何在其中获取json。 还是有更好的方法,例如拦截响应而不是请求? 谢谢 问题答案: 您应该重写的方法

  • 嗨,我正在通过axios尝试reactjs POST请求,但出现错误,我查看了所有文档,但错误未得到解决。 这是我的错误: 未捕获(promise中)错误:请求在XMLHttpRequest的结算(eval at(bundle.js:4621),:15:15)处的createError(eval at(bundle.js:4615),:18:12)处失败,状态代码为400。手工装载(在(捆js:4

  • 我有一个骆驼endpoint,另一个应用程序在那里发送带有一些数据的post请求(可能是通过其他路由) 我想处理这个数据,并用POST请求的响应将一些东西返回给应用程序。 这就是我的骆驼上下文现在的样子: 如何通过post请求的响应从路由sendFinData发回一些应答?

  • 我正在做一个项目,在这个项目中我正在创作一本书。创建图书后,将生成唯一的bookId,响应如下所示: 我有一个GET请求,它基本上使用bookid-http://localhost:port/{bookId}获取书籍的详细信息。 每当我创建一本书时,我都会尝试得到上面的URL以便我的响应看起来像这样: 这样,如果用户单击URL,就会导航到GET请求http://localhost:port/{bo

  • 我见过龙卷风文档和示例,其中self.write方法被广泛用于在超文本标记语言上呈现一些值,其中POST请求在处理程序中运行。但是我找不到关于如何将响应返回给客户的清晰信息。 例如,我正在从我的客户端调用Tornado服务器上的POST请求。接受post请求的代码为: 有了这个,我可以找到cbtp的值,有了,我可以用HTML打印它。但是,相反,我想以JSON格式将这个值返回给客户机,比如我想知道如

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • ----在2019-06-03@13:21 CET下面添加信息----因为我有一个普通的Spring(非引导)应用程序接受来自打印机的POST请求,所以我能够在传入的请求中记录信息。所以我就这么做了。 这是来自打印机的POST请求之一,Spring boot Oontroller不接受它: 这是Postman向完全相同的URL发送的POST请求之一,Spring boot Oontroller接受