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

OnSecurity正文为空并返回500错误代码

钱振
2023-03-14

我有一个请求和响应Json。当我提交请求时,它将在我的应用程序中显示响应。Url显示邮递员请求和响应[1]:https://i.stack.imgur.com/UW4jo.png我尝试了下面的代码,但面临的问题是,我得到了正确的JSONObject响应,但在调试时,当光标进入改装的onResponse方法时,主体显示为null,错误代码为500。但在《邮差》中,一切都很好。我因为这个问题浪费了两天时间。请帮帮我。

应用代理

@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类

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个答案

高功
2023-03-14

尝试将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);
 类似资料:
  • 我部署基本Laravel项目到服务器。当我点击我的域名,它返回默认的欢迎视图。当我把简单的道路(见下文)添加到代码中,并尝试在浏览器中输入该路线时,它会返回500个内部错误。除"/"根路由外,所有路由都返回500错误。 文件夹结构: Laravel文件位于Laravel目录中,但来自公共目录的文件位于api目录中。 .api目录中的htaccess文件: 存储目录和其中的所有内容对任何人都是可写、

  • 问题内容: 我正在通过Ajax将幻灯片(Jquery Ui Slider)中的每个滑块值传递到我的Controller。 Slider + Ajax看起来像这样: 因此,我确实有这样的想法: 我的路线如下所示: 在我的Controller方法中,我这样调用它: Log :: info($ sliderValue)告诉我,我确实在每张幻灯片上都获得了正确的滑块值。 当我尝试返回到编辑视图时,在控制台

  • 我遇到了从html向servlet提交数据的问题 消息为空 说明服务器遇到意外情况,无法完成请求。 例外情况 注意服务器日志中提供了根本原因的完整堆栈跟踪。

  • 问题内容: 我已经实现了IErrorHandler来处理在我的宁静WCF服务的构造函数中引发的授权异常。当捕获到一般异常时,将按预期返回我的自定义类型,但是ContentType标头不正确。 但是,当错误处理程序尝试返回401未经授权的http状态代码时,消息正文将覆盖为默认类型,但ContentType标头应为原样。 显然这里有问题,但我不确定是什么。 如何实现IErrorHandler,使其以

  • 我使用的是Nexus3.2,我有包含npmjs和npm-internal存储库的npm-all组,但例如,当我执行时,返回以下错误: npm信息如果以OK结束,则它可以工作 npm信息使用npm@3.10.3 npm信息使用节点@v6.5.0 npm信息尝试注册表请求尝试#1在17:31:16 npm http请求GET http://x.x.x.x:8081/repository/npm-all

  • 我已经发布了一个请求,并在postman上测试它,响应在postman和android logcat上正确返回,但在改型时,它在正文中返回null 下面是响应的模型 当我发送请求时,响应将获得null响应,而errorbody内容将获得以下内容 [size=99 text={\r\n“errors”:{\r\n“driversapi”:[\r\n“order alredy assig…] 下面是预