Raj.A Raj.A - 2 months ago 11
JSON Question

How to get UK region using postcode?

I want to get the UK region based on the postcode given using PHP. I have written as $ch = curl_init();

$post="PR3 0SG";

curl_setopt($ch,CURLOPT_URL, "https://api.postcodes.io/postcodes/$post");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_POST, TRUE);

//curl_setopt($ch, CURLOPT_POSTFIELDS, "limit=1");

$buffer = curl_exec($ch);

if(empty ($buffer))
{
echo " buffer is empty ";
}
else
{
echo $buffer;
}

curl_close($ch);


I get "buffer is empty" message.
What's wrong with this! Is there any other way or script to get UK regions using postcode? I possible please provide.

Answer
  1. You're not initializing the curl object ($ch) anywhere, you need to do that before actually using it.
  2. You're sending a POST request and this API endpoint works with GET

    <?php
    $post = "PR3 0SG";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.postcodes.io/postcodes/$post");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
    $buffer = curl_exec($ch);
    if (empty ($buffer)) {
        echo " buffer is empty ";
    } else {
        echo $buffer;
    }
    
    curl_close($ch);
    

Result:

{"status":200,"result":{"postcode":"PR3 0SG","quality":1,"eastings":351012,"northings":440283,"country":"England","nhs_ha":"North West","longitude":-2.74625152521674,"latitude":53.8564534479741,"parliamentary_constituency":"Wyre and Preston North","european_electoral_region":"North West","primary_care_trust":"North Lancashire Teaching","region":"North West","lsoa":"Wyre 006A","msoa":"Wyre 006","incode":"0SG","outcode":"PR3","admin_district":"Wyre","parish":"Myerscough and Bilsborrow","admin_county":"Lancashire","admin_ward":"Brock with Catterall","ccg":"NHS Lancashire North","nuts":"Lancaster and Wyre","codes":{"admin_district":"E07000128","admin_county":"E10000017","admin_ward":"E05009934","parish":"E04005340","ccg":"E38000093","nuts":"UKD44"}}}