簡體   English   中英

Retrofit2 POST 請求響應返回 null

[英]Retrofit2 POST Request response returns null

我使用帶有多個參數的改造 2 發出POST請求。 調用成功,但response.body()等於 null。 我已經用 Postman 檢查了具有相同參數的 URL 並且它工作正常,所以我真的不認為這是調用的問題,但我相信我用來接收回調的方法不正確(錯誤代碼我從response.code()收到的是 500) 。 任何幫助將不勝感激,謝謝。

POST接口:

public interface POSTApi {
  String BASE_URL = "someURL/";

  @POST("like")
  Call<Resultlike> post(@Body Resultlike login);
}

打電話

private Retrofit retrofit = new Retrofit.Builder().baseUrl(POSTApi.BASE_URL)
        .callbackExecutor(Executors.newSingleThreadExecutor())
        .addConverterFactory(GsonConverterFactory.create())
        .build();

POSTApi apiInterface = retrofit.create(POSTApi.class);

final Resultlike resultlike = new Resultlike("param1","param2","param3","param4");
    Call<Resultlike> call = apiInterface.post(resultlike);

    call.enqueue(new Callback<Resultlike>() {
        @Override
        public void onResponse(Call<Resultlike> call, Response<Resultlike> response) {
            Resultlike logresponse = (Resultlike) response.body();

            Log.e("TAG", String.valueOf(response.code()));

            if(!response.isSuccessful()) {
                Log.e("TAG", "NOT SUCCESSFUL");
            }


            Log.e("TAG", logresponse.getResult().getMessage());
            Log.e("TAG", logresponse.getResult().getStatus());
        }

        @Override
        public void onFailure(Call<Resultlike> call, Throwable t) {
            Log.e("TAG", "FAILURE");
        }
    });

ResultLike 對象類:

public class Resultlike {

// These 4 are parameters that are passed in to make the POST request
@SerializedName("uid")
public String uid;
@SerializedName("contentId")
public String contentId;
@SerializedName("like")
public String like;
@SerializedName("timestamp")
public String timestamp;

// This is supposed to be receiving the callback of the data
@SerializedName("result")
public DataLike result;

public Resultlike(String uid, String contentId, String like, String timestamp) {
    this.uid = uid;
    this.contentId = contentId;
    this.like = like;
    this.timestamp = timestamp;
}


public DataLike getResult() { return result; }

public void setResult(DataLike setData) { result = setData; }

public String getUid() { return uid; }

public String getTimestamp() { return timestamp; }

public String getLike() { return like; }

public String getContentId() { return contentId; }

public void setUid(String uid) { this.uid = uid; }

public void setTimestamp(String timestamp) { this.timestamp = timestamp; }

public void setLike(String like) { this.like = like; }

public void setContentId(String contentId) { this.contentId = contentId; }

}

DataLike 對象類:

public class DataLike {

    @SerializedName("status")
    @Expose
    private String status = "";

    @SerializedName("message")
    @Expose
    private String message = "";

    public String getMessage() { return message; }

    public String getStatus() { return status; }

    public void setMessage(String message) { this.message = message; }

    public void setStatus(String status) { this.status = status; }
}

我期望從回調中得到 JSON 數據:

{
  "result": {
    "status": "some string",
    "message": "some string"
  }
}

發生崩潰前的相關日志:

// 500 is the response code resulting from response.code()
E/TAG: 500
E/TAG: NOT SUCCESSFUL

Web 服務響應代碼是 500,因此它表示服務器端錯誤,因此請通知 Web 端開發人員檢查他們這邊的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM