質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2922閲覧

PythonのRequestsモジュールにて POST送信し、PHPでPOSTを受け取りたい。

nuuuuben

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/08 00:39

編集2021/08/08 12:32

解決したいこと

Python Requestsモジュールにて POST送信し、PHPでPOSTを受け取ろうとしております。
PHP側からレスポンスは返って来てはいるのですが、POSTしたデータがなく、いろいろ調べましたが、解決できなく困り果ててます。

python側

import json import requests json_data = { 'datas': 'data' } TO_URL = "http://hoge.com/hoge.php/" headers={'Content-Type': 'application/json'} response = requests.post( TO_URL, data=json.dumps(json_data),headers=headers) print(response.text)

PHP側

$raw_data = file_get_contents("php://input"); $json = json_decode($raw_data, true); print_r($json);

自分で試したこと

requests.post( TO_URL, param=json_data)

にてPHP側で$_GETでJSONを受け取ることはできましたが、やりたいことはPOST(バイト数が多いデータもあるため)なので根本的な解決に至っていません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/08/08 11:25

HTTP でいうところの "POST" つまり、form の method=POST を実現したいと考えてるんですよね?
takasima20

2021/08/08 21:13

$raw_data にはなにか来てますか? あと response.status_code も確認してみましょう。
nuuuuben

2021/08/09 03:10 編集

ご回答ありがとうございます。 自分でも色々試したのですが、環境が問題かなと言うことにたどり着きました。 php側はXSERVERなのですが、そちらでは$raw_dataは空。 試しに他で立ち上げたサーバーに同じPHPを置いて渡してみたところ、$raw_dataにしっかりデータが入っていました。 php.ini 等で受け取れるようにする設定があるのでしょうか? それともXSERVERが外部からのPOSTは受け付けない仕様なのかな?とも思ってサポートに問い合わせてみましたが、XSERVERで外部からのPOST制限等はかけていないようです。
takasima20

2021/08/09 11:42

response.status_code にエラーが返ってたりしないスかね?
nuuuuben

2021/08/09 13:29 編集

すいません見落としていました。 response.status_codeは ずっと200なんです。 自分なりに検証してみてるのですが、 XSERVERのほうでで送信されたヘッダーを確認してみると、 Accept: */* User-Agent: python-requests/2.25.1 Connection: close X-File-Type: normal X-Ua-Device: pc X-Failure-Cache-Time: 0 X-Accel-Expires: 60 X-Wp-Access: 0 X-Php-Fpm-Version: 74 X-Server-Address: 0.0.0.0  //変更してます X-Real-Ip: 0.0.0.0 //変更してます X-Forwarded-Ssl: on X-Forwarded-Port: 443 X-Forwarded-Host: hogehoge.com X-Forwarded-Proto: https X-Forwarded-For: 0.0.0.0 //変更してます Host: hogehoge.com 他のレンタルサーバーで構築した環境の方だと Host: 0.0.0.0 //変更してます User-Agent: python-requests/2.25.1 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Content-Type: application/json Content-Length: 17 と表示されます。(おなじPHPファイル)
nuuuuben

2021/08/10 04:38

ご回答ありがとうございました! XSERVER側に問い合わせて、何もしてないのですが、上記コードのままデータを受け渡すことができるようになってました。 server側の何かしらの原因だったのかもしれません。謎です。。。。 こちらでは何もしてませんが、解決できたのでクローズさせていただきます。ありがとうございました!
guest

回答1

0

自己解決

ご回答ありがとうございました!

XSERVER側に問い合わせて、何もしてないのですが、上記コードのままデータを受け渡すことができるようになってました。
server側の何かしらの原因だったのかもしれません。謎です。。。。

こちらでは何もしてませんが、解決できたのでクローズさせていただきます。ありがとうございました!

投稿2021/08/10 04:39

nuuuuben

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問