HTTPPOST - Неудачно в коде, но успешно через Почтальон - PullRequest
0 голосов
/ 26 мая 2019

Я отправляю запрос в формате JSON через сообщение http.Backend требует, чтобы я отправил два заголовка, а именно - Authorization и Content-Type.Затем необработанный JSON-запрос в качестве тела.Я отправляю запрос методом Post через инструмент Postman, и сообщение успешно проходит.Но когда я отправляю тот же запрос с теми же заголовками через код, я получаю неверный запрос - Ошибка.

Я минимизировал объем проверки для проверки.Я отправил только два заголовка через Почтальон, и вот ответ:

Заголовки

Авторизация: "носитель" + токен.Структура представляет собой ключевое слово "носитель" + пробел + токен Okta.Тип содержимого: application / json

Ответ:

Заголовки

Тип содержимого → application / json;charset = utf-8

Strict-Transport-Security → max-age = 31536000

X-Content-Type-Options → nosniff

Request-Context → appId = cid-v1: dc220dda-e515-4dd4-b324-c078a1b8fac4

Дата → Солнце, 26 мая 2019 13:23:01 GMT

Длина содержимого → 29

Body {"Message": "No Request Body"}

Но когда я отправляю то же самое с помощью кода, я получаю ошибку Bad-Request.Пожалуйста, помогите: (

  HttpClient httpclient1;
  HttpPost httppost1;
  //ArrayList<NameValuePair> postParameters1 = null;
  httpclient1 = HttpClientBuilder.create().build
  httppost1 = new HttpPost(Constants.URL);

  //  httppost1.setEntity(new UrlEncodedFormEntity(postParameters1,"UTF-8"));
  //  httppost1.setEntity(new StringEntity(request,"UTF-8"));

  httppost1.setHeader("Authorization", token);
  httppost1.setHeader("Content-Type", "application/json");
  // httppost1.setHeader("Content-Length", strlength);
//   httppost1.setHeader("Accept", "application/json");

 //  StringEntity entity = new StringEntity(request,ContentType.APPLICATION_JSON);
 //  httppost1.setEntity(entity);

 HttpResponse response1 = httpclient1.execute(httppost1);
 InputStream is = response1.getEntity().getContent();

 HttpEntity entity1 = httppost1.getEntity();

 Header[] headers = httppost1.getAllHeaders();
 System.out.println(headers.length);
 for(int i=0; i<headers.length;i++)
 {
   System.out.println(headers[i]);
 }


String result = convertInputStreamToStringCommonIO(is);
System.out.println();
System.out.println(result);

int code1 = response1.getStatusLine().getStatusCode();
System.out.println("Code: "+code1+"");
String reason1 = response1.getStatusLine().getReasonPhrase();
System.out.println("Description: "+reason1 +"");

Заголовки временных запросов от почтальона:

UserAgent: PostmanRuntime / 7.13.0

Примите: /

Cache-Contro: без кеша

Почтальон-токен: *****

Хост: *****

accept-encoding: gzip, dflate

content-length:

Соединение: keep-alive

Вот ошибка, которую я получаю:

{"errorCode":" E0000021 "," errorSummary ":" Неверный запрос. Вероятно, заголовки Accept и / или Content-Type не соответствуют поддерживаемым значениям. "," ErrorLink ":" E0000021 "," errorId ":" oae5BpTGp_5RjaFtGn_Zm_mhw "," errorCauses ": []} Код: 400 Описание: Неверный запрос

Есть идеи, почему не получается через код? Спасибо.

...