Как исправить Unirest неправильный ответ на запрос (Ошибка 400) - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть самый необычный запрос, который отлично работает на моем локальном компьютере.Однако всякий раз, когда я использую тот же запрос на нашем сервере 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"}

Кроме того, я даже не могу напечатать это тело, но могу распечататькод статуса.Я хотел спросить нашего клиента об этом, но я продолжал думать, что запрос отлично работает на моем локальном компьютере, поэтому это означает, что его веб-служба работает нормально.

Пожалуйста, скажите мне, если есть какая-либо другая информация, которую я должен предоставить.

1 Ответ

0 голосов
/ 05 июня 2019

С этой информацией очень сложно ответить, но некоторые советы:

400 Плохой запрос указывает на недопустимый / неправильно сформированный запрос, который не соответствует правилам API на стороне сервера.С предоставленной информацией, пожалуйста, запросите журналы на стороне сервера, чтобы увидеть, что пошло не так.

Пожалуйста, убедитесь, что один и тот же сервер / URL попадает в оба сценария, проверяя журналы сервера.Возможно, что второй сценарий затронул другой сервер - другую версию API, где, возможно, была изменена модель запроса?

Используйте Chrome Advanced REST Client или инструмент, такой как SoapUI, для отладки, если требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...