http POST: тело сообщения пусто.Все данные отправляются в разделе: «Post Params: key:».Это нормально? - PullRequest
3 голосов
/ 05 декабря 2011

Я новичок в интернет-программировании и у меня возникла проблема при отправке почтового запроса на сервер (я получил неопределенное сообщение об ошибке). Сервер, к которому я хочу подключиться, - это Microsoft HealthVault PreProductionEnvironment. Спецификация сказать это: «Обмен данными между службой HealthVault осуществляется через схематизированный XML в теле HTTP-запроса по соединению TLS [RFC2818]. HTTP-запросы ДОЛЖНЫ быть отправлены с использованием HTTP-глагола POST.»

Я пытался проверить почтовый запрос, отправив его на "http://posttestserver.com/post.php?dir=ms_hv" (результат отображается на" http://posttestserver.com/data/2011/12/05/ms_hv/").. Это данные, которые я получил:


Time: Mon, 05 Dec 11 05:26:53 -0800
Source ip: xxx.xxx.xxx.xxx

Headers (Some may be inserted by server)
UNIQUE_ID = TtzGna3sqvkAABZHetMAAAAH
CONTENT_LENGTH = 1157
HTTP_CONNECTION = close
HTTP_ACCEPT_ENCODING = gzip
HTTP_ACCEPT_LANGUAGE = en-US,*
HTTP_USER_AGENT = Mozilla/5.0
HTTP_HOST = posttestserver.com
CONTENT_TYPE = application/x-www-form-urlencoded
REMOTE_ADDR = 188.98.76.99
REMOTE_PORT = 21675
GATEWAY_INTERFACE = CGI/1.1
REQUEST_METHOD = POST
QUERY_STRING = dir=ms_hv
REQUEST_URI = /post.php?dir=ms_hv
REQUEST_TIME = 1323091613

Post Params:
key: '<?xml_version' value: '"1.0" encoding="utf-8"?><wc-request:request xmlns:wc-request="urn:com.microsoft.wc.request"><header><method>CreateAuthenticatedSessionToken</method><method-version>2</method-version><app-id>bc1fdbef-f814-4ee3-b414-1e9f6956c7ab</app-id><language>de</language><country>DE</country><msg-time>2011-12-05T14:26:51.31Z</msg-time><msg-ttl>1800</msg-ttl><version>2.0.0.0</version></header><info><auth-info><app-id>05a059c9-c309-46af-9b86-b06d42510550</app-id><credential><appserver2><sig digestMethod="SHA1" sigMethod="RSA-SHA1" thumbprint="50054D4FAEE16F69AAF66B7596ED30F9922B949E">fZaPzgI3x2ngzKnI2AU0leWgR7ycj7GcABPxktIKRd/u5eWk4dMGLiHv7x9oLKDAGC9BtAOGqe1YX80OpRFQC3VCioc9SGyAtBf0dTiM2tNcDTIboNqq0 m/d8FaI/MjIt8SlvXbV/LmCnEnjToPaiYnXqesJLflNUBRgotH2MK6YljcdB3G2JxghBlaqAYXKfx7c 8WQ9hA nnw75kTaJWXdgTAtdb0yUT5poYvm/ahG1PEl9BQCrR CmdYGECet4nlT1pFozYizI1lpZ4DQEv5eDz9YHGsqGO59oSOTX3iamRK wsaVvhKUBqS6 g7Q34wRa pv9mTocenMmCFOQ==</sig><content><app-id>bc1fdbef-f814-4ee3-b414-1e9f6956c7ab</app-id><hmac>HMACSHA256</hmac><signing-time>2011-12-05T14:26:51.3193190Z</signing-time></content></appserver2></credential></auth-info></info></wc-request:request>'

== Begin post body ==

== End post body ==

Проблема, которую я не понимаю, состоит в том, что тело сообщения пусто. Все пост-данные отображаются в «Post Params». Это правильно? Может ли это быть вина?

Скажите, пожалуйста, если вам нужно более подробное описание.

Решение (возможно): Тело поста пустое, но в спецификации оно говорит «XML в теле HTTP-запроса», это, вероятно, означает «в теле POST» (но мое пусто). Я проверю эту возможность.

1 Ответ

1 голос
/ 05 декабря 2011

Используя "?" в своем URL вы используете метод HTTP GET. Вы можете смешивать GET и POST в одном запросе (что может привести к некоторым неясным проблемам, особенно, когда register_globals включен в вашей php-установке), но вы не должны:

Поскольку я интерпретирую ваше сообщение об ошибке, ваш сервер не принимает отправку информации через HTTP GET. Вместо этого вы должны использовать метод HTTP POST. Пример HTTP POST с использованием QT вы можете найти здесь .

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