【Python,PHP版】配列データをPOST形式で正しく送信する方法!

PHP

配列データを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」は配列として認識されていました。

 

 

めでたしめでたし。

 

 

AI(機械学習)が学べるスクールを講座ごとに一覧表示!

さらに、比較表を活用することにより、細かい特徴が違いが一発でわかります。

AIスキルを身に付けて、市場価値が高いエンジニアを目指しましょう!

 

AIスクールの検索、比較ができるペン太ブル本家

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG