How to post request with query params in laravel 9

3k Views Asked by At

I am trying to send post request with query params, just like this screenshot

enter image description here

I used Http::post but it supports only JSON as far as I know. I just want to send request just like the screenshot. cause API data only supports parameter wise. Here What I tried but failed to achieve that.

FormController.php:

 public function post_parameter_wise(Request $request,$lp_campaign_id, $lp_campaign_key, $first_name, $last_name, $email, $phone, $zip_code){
        $form = new Form();
        $fName = $form->first_name = $request->get($first_name);
        $lName = $form->last_name = $request->get($last_name);
        $cCmail = $form->email = $request->get($email);
        $cPhone = $form->phone = $request->get($phone);
        $zCode = $form->zip_code = $request->get($zip_code);

        $response = Http::post("https://t.vivint.com/post.do", [
            "lp_campaign_id" => $lp_campaign_id,
            "lp_campaign_key" => $lp_campaign_key,
//            "lp_supplier_id" => "",
            "first_name" => $fName,
            "last_name" => $lName,
            "email" => $cCmail,
            "phone" => $cPhone,
            "zip_code" => $zCode
        ]);

        dd($response);
2

There are 2 best solutions below

0
On BEST ANSWER

Can't leave a comment so disregard this as the answer

Preferably, you just need to change it from a Post request to a Get request and it will work

$response = Http::get("https://t.vivint.com/post.do", [...

But a post request will contain the data as a post request should. If you have to use post and define the query params then you should do it as follows

public function post_parameter_wise(Request $request,$lp_campaign_id, $lp_campaign_key, $first_name, $last_name, $email, $phone, $zip_code){
        $form = new Form();
        $fName = $form->first_name = $request->get($first_name);
        $lName = $form->last_name = $request->get($last_name);
        $cCmail = $form->email = $request->get($email);
        $cPhone = $form->phone = $request->get($phone);
        $zCode = $form->zip_code = $request->get($zip_code);

        $response = Http::post("https://t.vivint.com/post.do?lp_campaign_id=".$lp_campaign_id."&lp_campaign_key=".$lp_campaign_key."&first_name=".$fName."&last_name=".$lName."&email=".$cCmail."&phone=".$cPhone."&zip_code=".$zCode, []);

        dd($response);

Although this is really just forcing it to

1
On

a very easy way to do it is to add withQueryParameters([]) to the request.

example

    $response = Http::withQueryParameters([
        "lp_campaign_id" => $lp_campaign_id,
        "lp_campaign_key" => $lp_campaign_key,
    //  "lp_supplier_id" => "",
        "first_name" => $fName,
        "last_name" => $lName,
        "email" => $cCmail,
        "phone" => $cPhone,
        "zip_code" => $zCode
        ])->post("https://t.vivint.com/post.do");

    dd($response);