php – Guzzle returns cURL error 3: <url> malformed-ThrowExceptions

Exception or error:

I want to try out the guzzle library and am following through their quickstart tutorial to make http requests to an api.

Yet it doesn’t seem to work, because I get the following error:

cURL error 3: <url> malformed

Since I have never worked with cURL before, I don’t even know how to respond to that error message. Here is my code with the request I am making:

    $client = new Client();
    $client->get('/', ['verify' => true]);

    $response = $client->get('https://api.github.com/');

    dd($response);

I am using the Laravel 5 framework and calling the index method in my HomeController. Also am using WAMP.

I would appreciate any help and suggestion, because I would like to try Guzzle out.

Here is a picture of the Error Message I get:

Laravel 5 Error Message

How to solve:

If you want to disable verification (don’t do this!):

$response = $client->get('https://api.github.com/', ['verify' => false]);

Rather than disabling verification entirely, this can likely be fixed by providing proper CA bundle file. See verify in Guzzle documentation.

$client->setDefaultOption(
    'verify', 
    'C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt'
);

Answer:

You should not have this call:

$client->get('/', ['verify' => true]);

That is what is throwing the error. The third line is okay.

The error is means what it says. The url is malformed. In my case on initialization of the Client, I used base_url instead of base_uri. So if you run into this error make sure your url is properly specified.

Answer:

In case you came here because you googled “Guzzle returns cURL error 3: malformed” check the client parameter. In some version it’s base_uri and other base_url

    $client = new Client([
        'base_uri' => 'http://localhost:8000',  // <-- base_uri instead of base_url
    ]);

Leave a Reply

Your email address will not be published. Required fields are marked *