OnResponse正文为null并返回500错误代码

时间:2017-11-22 09:26:13

标签: android json post retrofit2

我有一个请求和回应Json。当我提交请求时,它将在我的应用程序中显示响应。 Url显示邮递员请求和响应[1]:https://i.stack.imgur.com/UW4jo.png我尝试了下面的代码,但问题是我得到了正确的JSONObject响应但是在调试时光标进入onResponse方法的改造然后body显示null和500错误代码。但在邮递员工作一切都很好。我有这个问题丢了2天。请帮助我。

APIService

@Headers("Content-Type: application/json")
@POST("api/Conveyance/SubmitConveyanceRequest")
Call<List<ModelFileInsertID>> saveTravelRequestDetails(@Body JSONObject submitRequest);

调用api

   public void btnOnClickSave() {
    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put(AppConstants.SaveKeyData.KEY_REIMBURSEMENT_HDR_ID, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_PROCESS_ID, 1);
        jsonObject.put(AppConstants.SaveKeyData.KEY_INSTANCE_ID, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_REQUEST_NO, requestNo);
        jsonObject.put(AppConstants.SaveKeyData.KEY_RAISED_BY, raisedBy.getText().toString());
        jsonObject.put(AppConstants.SaveKeyData.KEY_RAISED_DATE, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_APPROVER, selectedItemText);
        jsonObject.put(AppConstants.SaveKeyData.KEY_APPROVER_DATE, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_TRAVEL_TOTAL_AMOUNT, textViewTotal.getText().toString());
        jsonObject.put(AppConstants.SaveKeyData.KEY_STATUS, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_IS_DEVIATED, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_IS_DEVIATED_REASON, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_PENDING_WITH, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_RAISED_BY_NAME, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_APPROVED_BY_NAME, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_REMARK, remark.getText().toString());
        jsonObject.put(AppConstants.SaveKeyData.KEY_APPROVER_REMARK, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_PERFORMER, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_POSTING_CODE, "");
        jsonObject.put(AppConstants.SaveKeyData.KEY_STEP_ACTION, stepAction);

        jsonObject.put(AppConstants.SaveKeyData.KEY_DETAILS, getAddDetails());

        jsonObject.put(AppConstants.SaveKeyData.KEY_DOCUMENT_LIST, getFilePath());

        jsonObject.put(AppConstants.SaveKeyData.KEY_AUDITTRAIL, getAuditTrailDetails());


    } catch (JSONException e) {

        e.printStackTrace();
    }

    if (Utility.getInstance().isNetworkConnected(getParent())) {

        Call<List<ModelFileInsertID>> call = HDFCService.setSaveTravelRequestDetails().saveTravelRequestDetails(jsonObject);
        call.enqueue(new Callback<List<ModelFileInsertID>>() {

            @Override
            public void onResponse(Call<List<ModelFileInsertID>> modelInsertID, Response<List<ModelFileInsertID>> response) {

                AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(getActivity());
                try {
                    List<ModelFileInsertID> insertIDs = response.body();
                    if (insertIDs.get(0).getIsSuccess() == true) {
                        mAlertDialog.setMessage(insertIDs.get(0).getMessage());
                        //progressBar.dismiss();
                    } else {
                        //  progressBar.dismiss();
                        mAlertDialog.setMessage(AppConstants.SaveKeyData.DATANOTSAVE);
                    }


                } catch (Exception e) {
                    e.printStackTrace();
                }
                mAlertDialog.setTitle(AppConstants.AppText.HDFC);
                mAlertDialog.setPositiveButton(AppConstants.AppText.OK, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        getParent().clearBackStack();
                        //getParent().openHomeFragment();
                        //progressBar.dismiss();
                    }
                });

                mAlertDialog.show();
            }

            @Override
            public void onFailure(Call<List<ModelFileInsertID>> call, Throwable t) {
                Toast.makeText(getActivity(), AppConstants.AppText.SERVICE_ERROR, Toast.LENGTH_LONG).show();
            }
        });
    }
}

public JSONArray getAddDetails() {
    JSONArray detailsArray = new JSONArray();
    JSONObject jsonObj;
    for (int i = 0; i < travelRequestAddDetailses.size(); i++) {

        jsonObj = new JSONObject();
        try {

            jsonObj.put(AppConstants.SaveKeyData.KEY_REIMBURSEMENT_DTL_ID, 0);
            jsonObj.put(AppConstants.SaveKeyData.KEY_REIMBURSEMENT_HDR_ID, 0);
            jsonObj.put(AppConstants.SaveKeyData.KEY_TRAVEL_DATE, travelRequestAddDetailses.get(i).getTravellingDate());
            jsonObj.put(AppConstants.SaveKeyData.KEY_TRAVEL_FROM, travelRequestAddDetailses.get(i).getTravellingFrom());
            jsonObj.put(AppConstants.SaveKeyData.KEY_TRAVEL_TO, travelRequestAddDetailses.get(i).getTravellingTo());
            jsonObj.put(AppConstants.SaveKeyData.KEY_TRAVEL_DESCRIPTION, travelRequestAddDetailses.get(i).getTravellingDesc());
            jsonObj.put(AppConstants.SaveKeyData.KEY_TRAVEL_AMOUNT, travelRequestAddDetailses.get(i).getTravellingAmount());
            detailsArray.put(jsonObj);
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    return detailsArray;
}

ModelFileInsertID pojo class

public class ModelFileInsertID {


@SerializedName("Message")
@Expose
private String message;
@SerializedName("Request")
@Expose
private String request;
@SerializedName("IsSuccess")
@Expose
private Boolean isSuccess;

public String getMessage() {
    return message;
}

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

public String getRequest() {
    return request;
}

public void setRequest(String request) {
    this.request = request;
}

public Boolean getIsSuccess() {
    return isSuccess;
}

public void setIsSuccess(Boolean isSuccess) {
    this.isSuccess = isSuccess;
}}

更新

公共类HDFCService {

private static OkHttpClient client = new OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.MINUTES)
        .readTimeout(10, TimeUnit.MINUTES)
        .build();

private static final Retrofit RETROFIT = new Retrofit.Builder()
        .baseUrl(AppConstants.AppText.SERVICE_BASE_URL).client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

private static final TravelRequestService TRAVEL_REQUEST_SERVICE = RETROFIT.create(TravelRequestService.class);

public static TravelRequestService setSaveTravelRequestDetails(){
    return TRAVEL_REQUEST_SERVICE;
}

}

1 个答案:

答案 0 :(得分:0)

尝试将JSONObject作为RequestBody传递

RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject);
Call<List<ModelFileInsertID>> call = HDFCService.setSaveTravelRequestDetails().saveTravelRequestDetails(requestBody);

API服务接口:

@POST("api/Conveyance/SubmitConveyanceRequest")
Call<List<ModelFileInsertID>> saveTravelRequestDetails(@Body RequestBody body);