2013-07-01 2 views
0

Я работал с PHP уже много лет и установил многие HTML-формы, которые затем обрабатываются другой php-страницей, чтобы вставить запись в базу данных, в которой параметры POST задаются в отдельных полях.Проблемы с обработкой HTTP POST

Теперь я работаю с новым веб-сервисом, который отправляет данные на одну из наших страниц PHP, и нам не удалось проанализировать параметры POST. Я настраиваю тестовую форму html, чтобы имитировать POST, и это работает успешно.

Я просматриваю журналы IIS (сервер Windows Server 2008 R2 Standard Edition с IIS 7.5 и PHP 5.3.8) и установил Microsoft Network Monitor для сбора сведений о данных POST. Вот отрывок, показывающий детали полезной нагрузки для Webservice и мой HTML-форму:

Webservice: - клиент в IIS Вход появляется как: Apache-HttpClient/4.0.1 + (Java + 1,5)

  • полезная нагрузка : HttpContentType = NetmonNull HTTPPayloadLine: inReplyToId = MG1133 & для = 61477751386 & тела = Тест & от = 61477751386 & MessageId = 166652576 & rateCode =

Мой HTML Форма:

  • полезная нагрузка: HttpContentType = применение/х-WWW-форм-urlencoded inReplyToId: MG1133 к: 61477751386 тела: Тест от: 61477751386 MESSAGEID: 166594397

На странице PHP мы используем серию:

if(isset($_POST['inReplyToId']) && $_POST['inReplyToId'] !== '') { 
    $request->setField('ReplyToID', $_POST['inReplyToId']); 
    } 

, чтобы получить значения POST и установить их в поля как часть создания новой записи в базе данных. Когда Webservice выполняет POST, ни одно из значений POST не устанавливается в полях - запись создается, но с пустыми значениями поля.

Когда мы выполняем полную форму html, все происходит так, как ожидалось.

Я не уверен, куда идти дальше с устранением неполадок - я могу увидеть различные HttpContentType и другую структуру для полезной нагрузки, но не уверен, что это проблема и какие действия мне нужно предпринять.

+0

У вас есть журнал доступа? Возможно, они не отправляют HTTP POST, а GET. –

+0

Проверьте журнал - это определенно проходит через POST. – user982124

+1

попробуйте получить данные из php: // input – hynner

ответ

0

Использование file_get_contents ('php: // input'), наконец, позволило мне увидеть данные POST. Затем я мог бы использовать parse_str() для генерации переменных из строки:

$postText = file_get_contents('php://input'); 
parse_str($postText); 

if(isset($inReplyToId) && $inReplyToId !== '') { 
$request->setField('_kf_GatewayMessageID', $inReplyToId); 
} 

и так далее.

Смежные вопросы