【问题标题】:Not receiving body on Apache Wink Rest Client error with JAX-RS Application使用 JAX-RS 应用程序未收到 Apache Wink Rest 客户端错误的正文
【发布时间】:2016-07-19 19:09:34
【问题描述】:

我需要对我的 JAX-RS 应用程序内部的外部源进行 JSON API 调用。根据我的研究,为了做到这一点,我需要使用RestClient(),它可以工作。但只有当我得到一个成功的回复时。当状态码不是400 时,它无法解析正文。这是我收到200 status 时的工作代码示例:

Resource resource = client.resource("https://api.paytrace.com/v1/customer/create");
String response = resource
    .contentType(MediaType.APPLICATION_JSON)
    .header("Authorization", "Bearer " + accessToken)
    .accept(MediaType.APPLICATION_JSON)
    .post(String.class, paytraceJSON);

我目前只是尝试注销response,但当响应详细说明正文中的错误时,什么也得不到。有没有更好的方法来处理这个问题,以便我可以从我自己使用的服务 API 中回显错误?

【问题讨论】:

    标签: java rest apache-wink


    【解决方案1】:

    我没有使用Resource 来处理所有事情,而是利用转换为ClientResponse 而不是String,当响应失败时(无论出于何种原因),这将返回错误而不只是文本。

    我需要对我的 JAX-RS 应用程序内部的外部源进行 JSON API 调用。根据我的研究,为了做到这一点,我需要使用 RestClient(),它可以工作。但只有当我得到成功的回复时。当状态码不是 400 时,它无法解析正文。这是我获得 200 状态时的工作代码示例:

    老办法:

    Resource resource = client.resource("https://api.com");
    String response = resource
        .contentType(MediaType.APPLICATION_JSON)
        .header("Authorization", "Bearer " + accessToken)
        .accept(MediaType.APPLICATION_JSON)
        .post(String.class, payload);
    //Parse the String here to turn it into a JSONObject
    

    新方式:

    Resource resource = client.resource("https://api.com/");
    ClientResponse response = resource.contentType("application/json")
            .accept("application/json")
            .header("Authorization", "Bearer " + accessToken)
            .post(payload);
    JSONObject customerResponseObject = response.getEntity(JSONObject.class);
    

    【讨论】:

    • 这是我见过的最有帮助的解决问题的答案
    猜你喜欢
    • 2013-02-19
    • 2016-12-06
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多