DEV Community

Zubair Mohsin
Zubair Mohsin

Posted on

5 4

Passing request data as XML in Laravel Http Client

If you don't know about Laravel Http client yet, give it a read in the official documentation here.

Here's how you can pass the request data while making a POST, PUT or PATCH request as an array (transformed to JSON).

$response = Http::post('http://test.com/users', [
    'name' => 'Steve',
    'role' => 'Network Administrator',
]);
Enter fullscreen mode Exit fullscreen mode

What if you end up with an old school API that still uses XML to receive data?

Here's how you can do this:

    $response = Http::withHeaders([
        "Content-Type" => "text/xml;charset=utf-8"
    ])->send("POST", "http://some-url.com", [
        "body" => '<?xml version="1.0" encoding="utf-8"?>
                    <soap:Envelope
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                        <soap:Body>
                            <SaveData xmlns="http://tempuri.org/">
                                <pParam>
                                    Value
                                </pParam>
                            </SaveData>
                        </soap:Body>
                    </soap:Envelope>'
    ]);
Enter fullscreen mode Exit fullscreen mode

If you know of a better alternative, please let me know :)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (5)

Collapse
 
gpakyoo profile image
Godluck Akyoo

If you are using Laravel 7+ it is even easier

Http::withHeaders(["Content-Type" => "text/xml;charset=utf-8"])
->post(self::CREATE_TOKEN_ENDPOINT, ['body' => $xml]);

Collapse
 
peter279k profile image
peter279k

The PHP has the XML extension support.

Try to look at the xmlwriter example :).

Collapse
 
zubairmohsin33 profile image
Zubair Mohsin

Hi. Thanks for the reply.

I am not sure how XMLWriter is relevant here?

This is particularly about "sending xml as request data in an http request".

Collapse
 
peter279k profile image
peter279k

I think it can use the XML extension to generate XML dynamically.

And not just use the XML string to be a request data.

Collapse
 
shadow243 profile image

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs