私は長年 PHP を使用してきましたが、多くの HTML フォームをセットアップしてから、別の php ページで処理してデータベースにレコードを挿入し、POST パラメータを個々のフィールドに設定しました。
現在、PHP ページの 1 つにデータを POST する新しい Web サービスを使用していますが、POST パラメータを解析できませんでした。POST を模倣するテスト html フォームをセットアップすると、正常に動作します。
IIS ログ (サーバーは IIS 7.5 および PHP 5.3.8 を実行する Windows Server 2008 R2 Standard Edition) を調べ、POST データに関する詳細をキャプチャするために Microsoft Network Monitor をインストールしました。以下は、Web サービスと私の HTML フォームのペイロードの詳細を示す抜粋です。
Webservice: - IIS ログのクライアントは次のように表示されます: Apache-HttpClient/4.0.1+(java+1.5)
- ペイロード: HttpContentType = NetmonNull HTTPPayloadLine: inReplyToId=MG1133&to=61477751386&body=Test&from=61477751386&messageId=166652576&rateCode=
私のHTMLフォーム:
- ペイロード: HttpContentType = application/x-www-form-urlencoded inReplyToId: MG1133 to: 61477751386 body: Test from: 61477751386 messageId: 166594397
PHP ページでは、次の一連のものを使用しています。
if(isset($_POST['inReplyToId']) && $_POST['inReplyToId'] !== '' ) {
$request->setField('ReplyToID', $_POST['inReplyToId']);
}
データベースに新しいレコードを作成する際に、POST 値を取得してフィールドに設定します。Webservice が POST を実行すると、POST 値はフィールドに設定されません。レコードは作成されますが、フィールド値は空になります。
HTML フォームの完成を実行すると、すべてが期待どおりに行われます。
これをトラブルシューティングするために次にどこに行くべきかわかりません。別の HttpContentType とペイロードの別の構造を確認できますが、これが問題であるかどうか、どのようなアクションを実行する必要があるかはわかりません。