почему Java HTTP-запрос с токеном всегда не авторизован - PullRequest
0 голосов
/ 18 марта 2019

Я попробовал следующий код. В основном, этот код взят из здесь . Там он утверждает, что это работает для него. Но это не сработало для меня.

private void doHttp() {
    try {
        String url = "http://myurl.com/cc/companies/3.88";
        String token = "eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0.....";
        URL object = new URL(url);
        HttpURLConnection con = (HttpURLConnection) object.openConnection();
        con.setDoInput(true);
        con.setRequestMethod("GET");
        con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        con.setRequestProperty("Accept", "application/json");
        con.setRequestProperty("Authorization:", "Token " + token);


        StringBuilder sb = new StringBuilder();
        int HttpResult = con.getResponseCode();
        if (HttpResult == HttpURLConnection.HTTP_OK) {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"));
            String line = null;
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            br.close();
        } else {
            System.out.println(con.getResponseMessage());
        }
    } catch (NotFoundException e) {
        if (e.getResponse().getStatus() == 404) {
            System.out.printf(e.getMessage());
        } else {
            System.out.printf(e.getMessage());
        }
    } catch (WebApplicationException e) {
        System.out.printf(e.getMessage());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        System.out.printf(e.getMessage());
    }

Всегда происходит сбой с сообщением об исключении. Недопустимые символы в поле заголовка сообщения: Авторизация:

Я пытаюсь выполнить тот же запрос с терминала, что и curl -X GET http://myurl.com/cc/companies/3.88 -H "принять: application / json" -H "X-Access-Token: eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2 ..." Это отлично работает.

Так как я могу сделать то же самое из кода Java?

Обновленный вопрос

После комментария Дж. Б. Низета мне удалось заставить запросы GET и DELETE работать нормально. Но теперь я хотел бы попробовать POST. Вопрос снова приходит в curl в порядке, как: -

curl -X POST "http://myurl/app/operator" -H "accept: application/json" -H "X-Access-Token: eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..GZ-7sXRhKYHFPKBd.a7tQ2aTYqaKyCp-"  **-H "Content-Type: application/json" -d** "{ \"type\": \"OPERATOR\", \"dcpId\": 42968, \"externalId\": null, \"secondaryExternalId\": null, \"name\": \"Connexion\", \"configurationStage\": \"ACTIVE\", \"nodeStatus\": \"SUCCESS\", \"nodeUser\": null, \"serviceRequest\": null, \"additionalInfo\": null, \"serviceId\": null, \"operatorNo\": null, \"operator\": { \"dcpId\": null, \"name\": null, \"operatorNo\": null}"    

Я не знаю, как установить тело или -d "{\" type \ ": \" OPERATOR \ ", \" dcpId \ ": 42968, \" externalId \ ": null, \" virtualExternalId \ " ": null, \" name \ ": \" Connexion \ ", \" configurationSt .......} с помощью кода JAVA.

Я не могу найти соответствующий документ API для этого. Пожалуйста, дайте мне знать, как можно сделать это на Java. Заранее спасибо!

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