配列データをPythonからPHPにPOSTメッセージを送信するときに問題が発生した。おかげで、解決までに丸2日間かかった。
このような思いは誰にもしてほしくないのでメモ!
急いでいる方は、「結論!POSTで配列データを正しく送信する方法!」から読んでも構いません!
プログラミング・実務経験がある方も必見!
空いた時間をスキルアップ・収入増に使ってみませんか?
配列データをPOST形式で送る際に発生した問題
PythonからPHPにPOSTでデータを送信するとき、
配列のデータが正しく送れていないことが発覚しました。
送るデータはこんな感じ
keywords = ["あいうえお","カキクケコ"]
output_data = {}
output_data["uid"] ="ユーザID"
output_data["id"] ="アプリの番号"
output_data["keyword_list"] = keywords #配列
実際のPythonのコードはこんな感じ
import requests
keywords = ["あいうえお","カキクケコ"]
#データを設定する
output_data = {}
output_data["uid"] ="ユーザID"
output_data["id"] ="アプリの番号"
output_data["keyword_list"] = keywords #配列
#PHPに送信する部分
url = "http://localhost:8000/post_check.php"
r_post = requests.post(url, data=output_data)
pprint.pprint(r_post.text)
その結果、PHP側では以下のように受信した。
uid=ユーザID&id=アプリの番号&keyword_list=あいうえお&keyword_list=カキクケコ
なんと「keyword_list」が重複している。しかも配列形式になっていない!
では、対処方法を次の章で書きます。
結論!POSTで配列データを正しく送信する方法!
POSTで配列データを正しく送信する方法は以下のとおりです。
Python側のコード
import requests
keywords = ["あいうえお","カキクケコ"]
#データを設定する
output_data = {}
output_data["uid"] ="ユーザID"
output_data["id"] ="アプリの番号"
#ポイントはここ!
#配列で送りたい場合、キーを「keyword_list」ではなく、「keyword_list[0]」のように設定する
output_data["keyword_list[0]"] = keywords[0]
output_data["keyword_list[1]"] = keywords[1]
#PHPに送信する部分
url = "http://localhost:8000/post_check.php"
r_post = requests.post(url, data=output_data)
pprint.pprint(r_post.text)
PHP側の受信結果
uid=ユーザID&id=アプリの番号&keyword_list[0]=あいうえお&keyword_list[1]=カキクケコ
PHP側の変数 「$_POST」は、「keyword_list」は配列として認識されていました。
めでたしめでたし。
プログラミング・実務経験がある方も必見!
空いた時間をスキルアップ・収入増に使ってみませんか?