【PHP】curlでpostする方法

mac のターミナルで打つ、curl コマンドに出てくる引数、 -d や -u などを、PHPではどう書くのかを調べました。

↓こちらのサイトを参考にしました。

TestException.php

<?php

class TestException extends \RuntimeException {

private $type;
private $status;

public function construct($message, $type, $status) {
parent::
construct($message);
$this->type = $type;
$this->status = $status;
}

public function __toString() {
return "[$this->status] $this->type: {$this->getMessage()}";
}

public function getType() {
return $this->type;
}

public function getStatusCode() {
return $this->status;
}

}

TestClient.php

<?php

class TestClient {

private $apikey;
private $baseurl;

public function __construct($apikey, $baseurl){
$this->apikey = $apikey;
$this->baseurl = $baseurl;
}

public function post(array $params=[]){
$ch = curl_init();
curl_setopt_array($ch,[
CURLOPT_URL => "$this->baseurl",
CURLOPT_USERPWD => "$this->apikey:",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params, '', '&'),
]);
$r = json_decode(curl_exec($ch));

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
throw new TestException(curl_error($ch), 'curl_error', 0);
}
if ($status >= 400) {
if (isset($r->error)) {
throw new TestException($r->error->message, $r->error->type, $status);
}
throw new TestException('不明なエラー', 'unknown', $status);
}
return $r;
}

}

Main

<?php

require_once 'TestClient.php';
require_once 'TestException.php';

$api_url = '[API_URL]';
$api_key = '[API_KEY]';
$msg = 'test';

try {
$client = new TestClient($api_key,$api_url);

$r = $client->post([
'text' => "'".$msg."'",
]);

} catch (TestException $e) {

var_dump((string)$e);

}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA