ra_Chihuahua
@ra_Chihuahua

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

laravelで 外部サイトへPOSTしたい

解決したいこと

laravel初心者です。

前の画面からPOSTで受け取ったデータを
コントローラーにてDB保存後、
同じ画面で外部サイトへPOSTしたいです。
方法を教えてください。

発生している問題・エラー

該当するソースコード

namespace App\Http\Controllers\Writer;
//・・・省略
use GuzzleHttp\Client;
public function cartchk(Request $request)
{
    /* DB登録部分 省略*/

	$client = new Client();
	$option = [
	'http_errors' => true,
	'headers' =>
	   [                                     
	      'Content-Type'  => "text/plain",
	      'Charset' => 'Shift_JIS',
	   ],
	'form_params' =>
	   [
	      'para1' => 'test1',
	      'para2' => 'test2',
	      'para3' => 'test3',
	   ],
	];

	$response = $client->request("POST", 'POSTしたい送信先URL', $option);	
}

自分で試したこと

上記のように記述したのですが
DBには保存されているのですが、
POST先へ画面遷移せずに、真っ白な画面で表示されてしまいます。
redirect等を使うのでしょうか?

0

3Answer

This answer has been deleted for violation of our Terms of Service.

下記のコードは、対象URLに対して POSTリクエストを行い、そのレスポンスを受け取るというものなので、画面遷移はありません。

$response = $client->request("POST", 'POSTしたい送信先URL', $option);	

また、PHP は POST リダイレクトが出来なかったように思います。
POST にて画面遷移させたいのでしたら、一度画面表示した上で javascript での POST を実装することになるかと。

0Like

結論としては別の回答で示されているとおり、いったん画面を表示した上で画面遷移させる方法になります。

リダイレクトする時のHTTPメソッドは、直前のHTTPメソッドとリダイレクト時のステータスコードによります。

POSTを維持したリダイレクトはステータスコード307308になりますが、どちらも「(一時的または恒久的に)そのページが使用できないこと」を意味します。
それ以外のステータスコードはGETになります。
なので、POSTで遷移させたいならリダイレクトは今回のケースには適していないと思います。

0Like

Your answer might help someone💌