2011-07-04 20 views
1

ここには同じ問題がいくつかあるが、どれも単純なものではないので、私はポストであると思った。

私はPHPには新しく、$_POST$_REQUESTの両方の変数が空であることがわかります。 apache_request_headers()を使用してヘッダーを取得でき、ヘッダーが正しく表示されます。変数が空です。

私のクライアントはAndroid用アプリです。投稿メッセージを正しく生成しています。私はそれをテストするためにtcpdumpを使いました。また、apacheのログには、意図したPHPが呼び出されたことが示されます。私はApache 2.2.14とPHP 5.2.12を標準インストールとし、何も特別なものは使用しません。

$_POST変数が空である何らかの理由が考えられますか?

また、自分のコードでクラスを使用していません。必要に応じて他のクラスの関数を呼び出すだけの単純なコードです。私は$this->input->post()を使用することを示唆する別の記事を見たので私はこれを言及するが、それは私の場合には不可能である。

EDIT:以下のSeanのおかげで問題が見つかりました。 "Content-Type"が正しく設定されていないため、実際の値がPHPコードに達していませんでした。奇妙なことに、空の要求のヘッダーは、私が設定したものです。なぜデータが剥奪されるのでしょうか?

+0

私たちにあなたのダンプを教えてください。私はあなたが実際にヘッダーを正しく生成していないと思われます。 – Brad

+2

$ _GETも空であるかどうかチェックしましたか? – vascowhite

+0

@vascowhite:その場合、$ _REQUESTも空ではありません。 –

答えて

3

AndroidクライアントがPOSTで正しいコンテンツタイプを送信していることを確認してください。 application/x-www-form-urlencodedに設定する必要があります。

 url = new URL("your URL"); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     connection.setRequestMethod("POST"); 
+0

Microsoft ASP.NETアプリケーションと通信するiOSアプリケーションを作成していたときに、実際にこの問題に遭遇しました。 –

+0

あなたは正しいです!コンテンツタイプが間違っていました。それを正しく設定すると機能します。 – user220201

1

最初に、サーバーが301 '移動永久コードでPOSTデータをリダイレクトしていないことを確認します。これを確認するにはログファイルを開いてください。うまく機能している場合は、200コード(または最悪の場合は201)が表示されます。サーバーへの呼び出しごとに、POSTコードとGETコードが生成されます。両方が200であることを確認します。GETが200でPOSTは301の場合、サーバーは何らかの理由でリダイレクトしています(たとえば、http://mysite.comを呼び出していますが、サーバーはhttp://www.mysite.comにリダイレクトされます)。

あなたがアンドロイドでHttpPostを使用して、このような何かをしようとAndroidに戻り値なしGETテストする必要がある場合:

HttpPost httppost = new HttpPost("http://www.mysite.com?somevarname=somevalue"); 
httpclient.execute(httppost); 

次に、サーバ側からファイルを作成するような何かをやってみるか、もし何かGETのVARS存在しています。

ログにGETとPOSTの両方のリダイレクトコードがある場合は、リダイレクトを.htaccessで上書きするか、リダイレクトを停止するようにホストを設定する必要があります。

幸運を祈る!

関連する問題