Tutorial Praktis Handle Exception Guzzlephp
Assalamualaikum Warahmatullahi Wabarakatuh
Halo gaesss.. .selamat pagi, siang, sore, malam....
Pada artikel kali ini saya akan membuat catatan atau tutorial praktis Handle Exception Guzzlephp. Artikel ini saya buat karena berdasarkan pencarian yang saya lakukan di internet saya belum menemukan cara penanganan Handle Exception Guzzlephp yang praktis.
Pada Guzzlephp sendiri telah menyedikan beberapa exception. baik Parent exception ataupun turunannya, perhatikan pohon grafik dibawah ini :
. \RuntimeException
└── TransferException (implements GuzzleException)
├── ConnectException (implements NetworkExceptionInterface)
└── RequestException
├── BadResponseException
│ ├── ServerException
│ └── ClientException
└── TooManyRedirectsException
Karena saya ingin praktis maka saya tidak ingin menangkap semua Exception Guzzlephp yang telah disediakan, cukup akan saya gunakan TransferException saja. Berikut contoh kode yang biasa saya gunakan :
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Exception\TransferException;
try {
$client = new Client();
$options = [
'multipart' => [
[
'name' => 'nama',
'contents' => 'Ragnar Oratmangoen'
]
]
];
$request = new Request('POST', 'https://your-url-api.karepmu.sembarang');
$promise = $client->sendAsync($request, $options)->wait();
/**
*response dengan code 200 (berhasil) semua masuk sini, selain itu akan ditangkap oleh TransferException
**/
$respData = json_decode($promise->getBody()->getContents(), true);
echo '<pre>';
print_r($respData);
echo '</pre>';
}
catch (TransferException $e)
{
if ($e->getCode() == 0){
echo 'Gagal melakukkan koneksi ke url tujuan.'; // biasanya urlnya tidak dapat di akses (bukan 404 yaaa)
exit;
}
$respCode = $e->getResponse()->getStatusCode();
$respMessage = '.$e->getResponse()->getBody();
// selanjutnya lakukan apasajah (sakarepmu)
}
Perhatikan if ($e->getCode() == 0) itu adalah kode untuk menangkap jika URL tujuan tidak aktif (biasanya menggunakan ConnectException).
Contoh diatas saya menggunakan request method post, request method tidak harus post semua request method dapat digunakan.
Demikian apa yang bisa saya sampaikan, ini hanya sebagai catatan saya pribadi, syukurlah jika bermanfaat. kurang lebihnya mohon maaf dan silahkan berkomentar. Terimakasih...
Wassalamualaikum Warahmatullahi Wabarakatuh
Komentar
Posting Komentar