2016-12-02 16 views
1

私はPythonでポストリクエストをPHPに送信しようとしています(私はPhalcon PHPを使用しています)。json配列のPythonによるPHPへのポストリクエスト

Pythonのコード:

array_hash =["0x348eb29f3295fedc10b5b869c751fb5479585c7e65169512c3a5ff474bc0e85a", "0x63b2590119f7ea533ed93e6b2e6112410fbf49f99157bc6d7e0ce7469d3d23a8", "0xfbcdc555a3783b5cfa495ad7a5d14a159657a3f0f6b6a68583fb06ebdf984d70"] 

json_data = json.dumps({"data_hash": array_hash}) 

requests.post(php_url, json=json_data) 
、私はこれ持って

マイパイソンプリントのアレイは良いです:

{ 
    "data_hash":[ 
     "0x348eb29f3295fedc10b5b869c751fb5479585c7e65169512c3a5ff474bc0e85a", 
     "0x63b2590119f7ea533ed93e6b2e6112410fbf49f99157bc6d7e0ce7469d3d23a8", 
     "0xfbcdc555a3783b5cfa495ad7a5d14a159657a3f0f6b6a68583fb06ebdf984d70" 
    ] 
} 

しかし、私はPHPでそれを取得しようとしているとき、今の私の配列が空であるとする場合を私は、このエラーが発生しているアレイ上のループを作る:ここ

Invalid argument supplied for foreach() 

は私のPHPコードです:

if($this->request->isPost()){ 
    error_log($this->request->getPost('data_hash')[0]); 
    foreach ($this->request->getPost('data_hash') as $value) { 
     error_log($value); 
    } 
} 

しかし、私はこのように、単にJSON文字列を送信する場合:

{"test1": "hello", "test2": "world"} 

私はPHPでそれを得ることができ、それが動作します。だから...私のPython配列に何が間違っていますか?次を使用する必要が

requests.post(php_url, data=json_data, headers={'Content-Type': 'application/json', 'Accept':'application/json'}) 

は、あなたのPHPコードでMore complicated POST requests

requestsドキュメントでこれを見てください:

答えて

1

あなたにもheaders引数でjson引数の代わりにdataを使用する必要があります:(あなたの要求がコンテンツタイプにjsonを指定しているので)

$rawBody = $this->request->getJsonRawBody(true); 
+0

ありがとうur答え。私はすでにデータを使用しようとしましたが、同じ問題があります。 – John

+0

'headers'を追加しましたが、それでも同じ問題がありますか? – ettanany

+0

はい私はヘッダに同じ問題があります:/ – John