使用 Retrofit 从 API Post Call 获取错误请求

时间:2021-02-28 04:34:44

标签: java android post retrofit2

我在 PartnerController 类中创建了下一个 savePartner() 方法,如下所示:

 public void savePartner(View partnerForm) {
        context = partnerForm.getContext();

        PartnerDto partner = createPartner(partnerForm);
        
        String jsonPartner = convert(partner);

        Call<String> call = appAPI.savePartner("application/json", jsonPartner);

        Log.i(TAG, "getPartners submitted to API.");

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                if(response.isSuccessful()) {
                    String responseCall = response.body();

                } else {
                    System.out.println(response.errorBody());
                }
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {
                TableRow rowHeader = new TableRow(context);

                TextView name = new TextView(context);
                name.setText(t.getMessage());

                rowHeader.addView(name);

                //partnerForm.addView(rowHeader);

                t.printStackTrace();
            }
        });
    }

并且我已经添加了 savePartner 方法来改造界面:

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface IApplicationApi {
    @GET("Partner/")
    //Call<List<PartnerDto>> loadPartners(@Header("Authorization") String authorization);
    Call<List<PartnerDto>> loadPartners();

    @POST("Partner/")
    Call<String> savePartner(@Header("Content-Type") String content_type, @Body String partner);
}

当我在邮递员工作(代码 200)中执行 post 调用时,但我在 android-studio 中调试了前一个并获得了下一个错误:

<块引用>

响应{protocol=http/1.1, code=400, message=Bad Request, url=https://localhost/Partner/}

Error

而且我无法获得有关该错误的更多信息。请求是下一个:

<块引用>

Request{method=POST, url=https://localhost/Partner/, tags={class retrofit2.Invocation=administracion.MyProject.APIService.IApplicationApi.savePartner() [application/json, {"email":null ,"id":4,"lastname":null,"name":"me","phonenumber":0,"productamount":0.0,"productquantity":0.0,"registereddate":"2021-02-10T00: 00:00"}]}}

我把这些价值观放在邮递员身上,它就像一个魅力。我不知道为什么这个要求不好。有人能给我一些线索吗?

在此先感谢您的帮助! ^^

2021 年 1 月 3 日更新

我可以使用 httplogginginterceptor 获取错误原因,我将其分享以备更多人需要它:)

https://howtodoinjava.com/retrofit2/logging-with-retrofit2/

2 个答案:

答案 0 :(得分:1)

您可以使用 HttpLoggingInterceptor 并记录您的请求。我希望您在 json 正文或请求正文中缺少一个字段

答案 1 :(得分:0)

尝试替换这个@POST("Partner/") 与@POST("合作伙伴")