Я попробовал следующий код. В основном, этот код взят из здесь .
Там он утверждает, что это работает для него. Но это не сработало для меня.
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. Заранее спасибо!