2012-04-26 8 views
0

JSONでクライアントとサーバーとのやりとりを試みていますが、サーバーに送信するデータが到着していません。 PHPスクリプトの$_POST配列が空です。

私はちょうどMSDNからWebRequestのサンプルを取得してテストしました。それでも動作しません。また、HTML形式のデータを投稿するだけで、うまくいきました。私は完全に困惑している。

私はPHPでgetallheaders()を呼び出すと、私はのvar_dump($ _ POST)を実行しても

OK 
array(5) { 
    ["Content-Type"]=> 
    string(33) "application/x-www-form-urlencoded" 
    ["Host"]=> 
    string(9) "localhost" 
    ["Content-Length"]=> 
    string(2) "54" 
    ["Expect"]=> 
    string(12) "100-continue" 
    ["Connection"]=> 
    string(10) "Keep-Alive" 

を取得するには、アレイ(0)を返し

誰もが何かを示唆することはできますか?

+0

多分、C#コードの関連する部分を投稿しようとするので、どこに問題があるかわかります。今のところ私はちょうど1つのことを言うことができます - あなたは明らかに "何か"間違っています:) – walther

+0

あなたはあなたの要求のためのプロキシとしてフィドラーをセットアップすることができます、あなたは何が転送され、コード。 – dunston

答えて

1

MSDNのコードは生の文字列を送信するので、PHPはフィールドにブレークさせる方法を知らず、$_POSTに入れます。 file_get_contents('php://input')でPOSTデータを取得できるはずです。

あなたはデータが$_POSTに取得したい場合、あなたは(あなたがそれをコード化するのと同じ方法、あなたはGETパラメータを符号化するのと同じ方法、それをエンコードする必要があります:あなたが必要な場合は、いつものように

string postData="fieldName="+System.Web.HttpUtility.UrlEncode("The data that goes in the field"); 

をあなたは&秒でそれらを分離するために必要な複数のフィールド。

+0

Idan、あなたは絶対伝説です。魅力と大きな説明のように働いた。ありがとう! –

+0

喜んで役立つ。そして、私はPHPを知りません... –

0

者は自分のヘッダです。あなたがgetallheaders()の呼び出しの結果であなたのPOSTパラメータを期待すべきではありません。あなたがコンテンツ長として何かを送っています54 bを示唆ytes。 var dumping $ _REQUESTパラメータを試して、別のメソッドでそれらが送信されているかどうかを確認してください。

+0

現在、上記のMSDNリンクのサンプルコードを使用していますが、変更はありません –

関連する問題