ユーザ用ツール

サイト用ツール


11_php:02_framework:01_laravel:35_laravel_guzzle

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
11_php:02_framework:01_laravel:35_laravel_guzzle [2019/05/25 00:55] matsui11_php:02_framework:01_laravel:35_laravel_guzzle [2021/02/26 12:21] (現在) matsui
行 9: 行 9:
   composer require guzzlehttp/guzzle   composer require guzzlehttp/guzzle
  
 +==== 1.シンプル利用 ====
 +<code>
 +use GuzzleHttp\Client;
 +
 +$url = 'https://hoge.hogehoge.com';
 +$ip = '192.168.10.11';
 +$port = '25';
 +$client = new Client();
 +$response = $client->request(
 +    'POST',
 +    $url,
 +    [
 +    'form_params' => [ 'ip' => $ip, 'port'=> $port],
 +    'verify' => false
 +    ]
 +    );
 +
 +echo $response->getStatusCode(); // 200
 +echo $response->getReasonPhrase(); // OK
 +echo $response->getProtocolVersion(); // 1.1
 +// レスポンスボディを取得
 +$responseBody = $response->getBody()->getContents();
 +</code>
 +
 +==== 2.JSON-RPC 2.0 ====
 +下記はZabbix apiでアラートを取得する例
 +
 +<code>
 +use GuzzleHttp\Client;
 +    $url = "http://hogehoge.net/zabbix/api_jsonrpc.php";
 +    $auth = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 +    $params = [
 +      "id"=> 1,
 +      "auth"=> $auth,
 +      "jsonrpc" => "2.0",
 +      "method"=> "alert.get",
 +      "params"=> [
 +        "output"=> "extend",
 +        "sortfield"=> "alertid",
 +        "sortorder"=> "DESC",
 +        "limit"=> 3
 +      ],
 +    ];
 +    
 +    $client = new Client();
 +
 +    try{
 +      $response = $client->request(
 +        'POST',
 +        $url,
 +        $params
 +      );
 +    } catch (\GuzzleHttp\Exception\ConnectException $e) {
 +      return json_encode($e->gethandlerContext());
 +    }
 +    
 +    echo $response->getStatusCode(); // 200
 +    echo $response->getReasonPhrase(); // OK
 +    echo $response->getProtocolVersion(); // 1.1
 +
 +    $responseBody = $response->getBody()->getContents();
 +    return $responseBody;
 +</code>
 +
 +
 +==== 3.XML_RPC ====
  
-===== Controller =====+=== Controller ===
  
 <code> <code>
行 46: 行 112:
 </code> </code>
  
-===== 呼び出し部分 =====+=== 呼び出し部分 ===
 <code> <code>
 $XmlRcp =  new App\Http\Controllers\XmlRpc($url, $user, $pass); $XmlRcp =  new App\Http\Controllers\XmlRpc($url, $user, $pass);
 $XmlRcp->send('partner10.getKeyInfo', 'PLSK.XXXXXXXX.XXXX') $XmlRcp->send('partner10.getKeyInfo', 'PLSK.XXXXXXXX.XXXX')
 +</code>
 +
 +
 +
 +
 +
 +
 +
 +===== 50X, 40X 対応 =====
 +
 +'http_errors' => false にすると、50X,40Xでも例外を投げられない(処理が止まらない)
 +
 +<code>
 +$response = $client->request(
 +    'GET',
 +    $url,
 +    [
 +    'timeout' => 2,
 +    'verify' => false,
 +    'http_errors' => false,
 +    ]
 +    );
 +</code>
 +
 +
 +
 +===== Error Handle =====
 +
 +timeoutなどのexceptionは下記のように処理する。
 +「catch (\GuzzleHttp\Exception\ConnectException $e)」でエラーを取得すると、タイムアウト時に終了せずエラーを受け取れる
 +
 +
 +<code>
 +try{
 +  // Code
 +  $response = $client->request(
 +    $method,
 +    $url,
 +    $params
 +  );
 +} catch(\GuzzleHttp\Exception\GuzzleException $e) {
 +  // Handle excpetion
 +  return json_encode($e->gethandlerContext());
 +}
 </code> </code>
  
 {{tag>Laravel}} {{tag>Laravel}}
11_php/02_framework/01_laravel/35_laravel_guzzle.1558745738.txt.gz · 最終更新: 2019/05/25 00:55 by matsui