LoginSignup
0
0

More than 1 year has passed since last update.

PHP Goutte\Client でPOST JSON(application/json)するには

Last updated at Posted at 2022-06-20

Goutte\Clientでスクレイピングというより自動化をしていたんですが、
FormではなくonclickでAJAX的にPOSTしている画面があって
Goutteは基本

        $cli = new Client();
        $top = $cli->request('GET', "https://admin.abcd.efg/aaa");
        $loginForm = $top->filter('form')->form();
        $loginForm['text'] = 'hello';
        $cli->submit($loginForm);

てな感じでFormありきじゃないといけないっぽいので、
"formじゃないinput"に別途入れる方法ないかな?って探しまくって
途方に暮れていたら
いっそうのことPOSTを投げればいいんじゃないか!とひらめき
ブラウザのDevToolでネットワークを覗き、cURLで取得してみたら
POSTでJSONを送ってる感じだった。

とはいえ、POSTでJSON送りつけるやり方わからず相変わらず途方に暮れていたら
https://qiita.com/kouma1990/items/8ec2acbc8a9307bc206a
の記事を発見!これすごい!!

ということで目的のPOSTでJSONを送るというやりたいことは実現できました。
ありがとうございます。感謝感謝


        $postdata["name"]="aaa";
        $postdata["text"]="hello";

        $options = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT | JSON_PRETTY_PRINT;

        $issue =  $cli->request('POST', "https://admin.abcd.efg/aaa", 
            array(), array(), array('HTTP_CONTENT_TYPE' => 'application/json'), json_encode($postdata, $options)
        );

        $res = $cli->getResponse();
        echo $res->getStatusCode()."\n";
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0