如何修复Unirest错误请求响应(错误400)

时间:2018-12-13 01:50:43

标签: java httpresponse unirest

我有一个非常简单的请求,可以在我的本地系统上完美运行。但是,每当我在UAT服务器上使用相同的请求时,它都会返回一个Error 400,它等同于一个错误的请求。

我了解到,这意味着请求的语法可能有问题,或者可能有任何错误。但是,当我在本地计算机上使用我的请求时,它可以工作,所以我想这意味着我的代码可以正常工作。

因此,我用尽了应该检查哪些部分才能完成这项工作的想法。下面是我标记的代码,以指示哪些是从本地使用的,哪些是从UAT服务器使用的:

来自本地:

public static String getConsumerBill(String accNum) {
    //getToken() is a method that returns a Token object that I made
    Token accessToken = getToken();

    HttpResponse<String> httpResponse = null;
    try {
        httpResponse = Unirest.post("http://api.nuvelco.com/v1/bill/inquiry")
                .header("accept", "application/json")
                .header("content-type", "application/json")
                .header("authorization", "Bearer " + response.getAccess_token())
                .header("cache-control", "no-cache")
                .body("{\"accountNo\":\"" + accNum + "\"}")
                .asString();
    } catch (UnirestException e) {
        e.printStackTrace();
    }

    return httpResponse.getBody();
}

来自UAT服务器

public static String getConsumerBill (String accNum) {
    Token accessToken = getToken();

    HttpResponse<String> httpResponse = null;
    try {
        /*
            urlInquiry is a global variable that gets its value from a database
            the value it gets is the same as the url from above
        */
        httpResponse = Unirest.post(urlInquiry)
                .header("accept", "application/json")
                .header("content-type", "application/json")
                .header("authorization", "Bearer " + accessToken.getAccess_token())
                .header("cache-control", "no-cache")
                .body("{\"accountNo\":\"" + accNum + "\"}")
                .asString();
    } catch (UnirestException e) {
        e.printStackTrace();
    }

    return httpResponse.getBody();
}

您可能会说,我唯一的不同是URL。它在我的本地进行了硬编码,而UAT服务器中的一个则从数据库中获取了。除此之外,我不确定UAT版本为什么返回Bad Request响应。

我本地的请求返回以下响应,错误代码为404,这是正常现象,这意味着它可以正常工作:

{"message":"Invalid account no.","code":1}

来自UAT服务器的一个返回此错误代码400:

{"error": "invalid_grant"}

除此之外,我什至无法打印该正文,但可以打印出状态代码。我想向我们的客户询问此事,但我一直认为请求在我的本地计算机上可以正常工作,这意味着他们的Web服务可以正常工作。

请告诉我是否需要提供其他信息。

1 个答案:

答案 0 :(得分:0)

用这些信息很难回答,但是有一些提示:

400错误请求表示无效/格式错误的请求,不符合服务器端API规则。 使用提供的信息,请索取服务器端日志,以查看发生了什么问题。

请确保通过验证服务器日志在两种情况下都击中相同的服务器/ URL。 第二种情况可能是使用其他服务器-不同的API版本,其中请求模型可能已更改?

根据需要使用Chrome Advanced REST Client或SoapUI之类的工具进行调试。