2011-12-09 33 views
1

PHPでWebサービスを実装しました。このサービスは、名前/値のペアを入力として受け取り、JSONでエンコードされた文字列を返します。GETが成功したときにWebサービスへのPOSTが失敗する:PHP

mac-osxとwindows 7で動作するローカルのApache Webサーバーでは、すべてが期待通りに機能していました。しかし、このLinuxベースのWebサービスプロバイダでPHPスクリプトをホストした後、私のPOSTリクエストは失敗しています。次のように失敗したバックエンドのPHPスクリプトによって

は次のとおりです。

if (session_id() == "") { 
    session_start(); 
} 

ob_start(); 

$command = isset($_REQUEST["Command"]) ? $_REQUEST["Command"] : ""; 
if ($command == "") { 
    echo("Handler Not Found: "); 
    print_r($_REQUEST); 
} 

Command=do_fooとURLへのPOST要求からの出力は常にHandler Not Found:です。これは、Webサービスが送信するパラメータのいずれも受け取っていないかのようです。私は期待どおりに動作すべてを取得するための呼び出し方法を変更した場合

[PHPSESSID] => db0af76fe8028e70dc96f816d0dbe927 

$_REQUESTの値をとして印刷されます。私は何が欠けていますか?

PS:apache.http.client.methods.HttpGet`apache.http.client.methods.HttpGetを使用してAndroidアプリでこのWebサービスを呼び出しています。

  1. 私はスーパーグローバル$_POSTを使用する場合、私は同じ問題を抱えている:私は、POSTは私がFireFox add-on Poster

    EDITてPOSTリクエストを送信しても失敗したことを確認しました。

  2. 私は自分のホストサーバーにsshできませんが、CPANELは私にそれを示しています register_globals=off。それが問題を生み出すかどうかはわかりません。

答えて

2

ini設定variables-orderまたはリクエスト発注をご覧ください。たぶんPOST変数が無効になって、$_REQUESTスーパーグローバルに含まれることがあります。

2

おそらく$_REQUESTが無効になっています。代わりに$_POSTを使用する必要があります。それはとにかく安全です。

0

LIMITエントリのためにあなたの.htaccessを確認し、何かのように:

<Limit POST> 
    order deny,allow 
    deny from all 
</Limit> 
関連する問題