HTTPS пост с c # sslclient - PullRequest
       2

HTTPS пост с c # sslclient

0 голосов
/ 12 февраля 2019

Я пытаюсь отправить POST-запрос в веб-сервис, используя c # и SslClient.Соединение TLS, кажется, работает, когда я отправляю запрос GET, сервер отвечает мне кодом состояния 200 и ожидаемым содержимым.

Моя проблема возникает, когда я пытаюсь отправить запрос POST.Сервер всегда возвращает ошибку BadRequest (400).

Я попытался проверить файл журнала на сервере (в папке HTTPERR), но ничто не помогает мне.

2019-02-11 14:41:50 IPClient PortClient IPServer PortServer - - - 400 - BadRequest -

Я прочитал в документе Microsoft, что BadRequest зарегистрированкогда произошла ошибка синтаксического анализа при обработке запроса.

Вот содержимое запроса, который я пытаюсь отправить:

POST https://xcmci04g.formation.cm-cic.fr:4446/Service1.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://standards.iso.org/iso/CENTS16986/ServicePT/sendApdu"
Content-Length: 4
Host: xcmci04g.formation.cm-cic.fr:4446
Connection: close
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

toto

Без разрывов строки:

POST https://xcmci04g.formation.cm-cic.fr:4446/Service1.svc HTTP/1.1\r\nAccept-Encoding: gzip,deflate\r\nContent-Type: application/soap+xml;charset=UTF-8;action=\"http://standards.iso.org/iso/CENTS16986/ServicePT/sendApdu\"\r\nContent-Length: 4\r\nHost: xcmci04g.formation.cm-cic.fr:4446\r\nConnection: close\r\nUser-Agent: Apache-HttpClient/4.1.1 (java 1.5)\r\n\r\ntoto\r\n\r\n

Я читал, что иногда "\ r \ n" может вызвать http 400, но я не знаю, как их заменить.

Может кто-нибудь сказать мне, почему мой сервер не принимает мой запрос?и как это исправить?

Спасибо!

1 Ответ

0 голосов
/ 12 февраля 2019

Ошибка в двойном дополнительном CRLF (\r\n\r\n) в конце вашего тела контента, и это не проблема SSL.

Объяснение :

Вы объявили, что ваше тело контента будет иметь длину 4

Content-Length: 4

И, наконец, вы вводите сервер в заблуждение, фактически отправляя:

toto\r\n\r\n

, длина которого равна 8.

Вот почему вы получили неверный запрос 400.

Трейлинг \r\n\r\n в конце тела содержимое не является HTTP.Вы должны удалить его, если он не является частью содержимого тела, в противном случае установите Content-length на 8.

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