首頁 >後端開發 >php教程 >幾種PHP發送HTTP請求的方式分享

幾種PHP發送HTTP請求的方式分享

小云云
小云云原創
2018-02-01 13:03:484129瀏覽

PHP 開發中我們常用 cURL 方式封裝 HTTP 請求,什麼是 cURL? cURL 是一個用來傳輸資料的工具,支援多種協議,如在 Linux 下用 curl 命令列可以發送各種 HTTP 請求。 PHP 的 cURL 是一個底層的函式庫,它能依照不同協定跟各種伺服器通訊,HTTP 協定是其中一種。本文主要和大家介紹PHP發送HTTP請求的幾種方式,整理一下除了使用 cURL 外 PHP 發送 HTTP 請求的方式,有興趣的可以了解一下。希望能幫助大家。

現代化的PHP 開發框架中經常會用到一個包,叫做GuzzleHttp,它是一個HTTP 客戶端,也可以用來發送各種HTTP 請求,那麼它的實現原理是什麼,與cURL 有何不同呢?

Does Guzzle require cURL?

No. Guzzle can use any HTTP handler to send requests. This means that Guzzle can be used with cURL, PHP's stream wrapper, sockets , and non-blocking libraries like React. You just need to configure an HTTP handler to use a different method of sending requests.

這是GuzzleHttp 文檔FAQ 中的一個Question,GuzzleHttp 並不依賴cURL 庫,可見而支援多種發送HTTP 請求的方式。

PHP 發送 HTTP 請求的方式

那麼這裡整理一下除了使用 cURL 外 PHP 發送 HTTP 請求的方式。

1.cURL

#詳細方法:http://www.jb51.net/article/56492.htm

#2. stream流的方式

stream_context_create 作用:建立並傳回一個文字資料流並套用各種選項,可用於fopen(), file_get_contents() 等過程的逾時設定、代理伺服器、請求方式、頭資訊設定的特殊過程。

以POST 要求為例:

PHP


<?php
/**
 * Created by PhpStorm.
 * User: tanteng
 * Date: 2017/7/22
 * Time: 13:48
 */
function post($url, $data)
{
  $postdata = http_build_query(
    $data
  );

  $opts = array(&#39;http&#39; =>
           array(
             &#39;method&#39; => &#39;POST&#39;,
             &#39;header&#39; => &#39;Content-type: application/x-www-form-urlencoded&#39;,
             &#39;content&#39; => $postdata
           )
  );
  $context = stream_context_create($opts);
  $result = file_get_contents($url, false, $context);
  return $result;
}

關於PHP stream 的介紹文章:http ://www.jb51.net/article/68891.htm

3.socket方式

使用套接字建立連接,拼接HTTP 封包傳送資料進行HTTP 請求。

一個GET 方式的範例:

PHP


<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: www.example.com\r\n";
  $out .= "Connection: Close\r\n\r\n";
  fwrite($fp, $out);
  while (!feof($fp)) {
    echo fgets($fp, 128);
  }
  fclose($fp);
}
?>

本文介紹了發送HTTP 請求的幾種不同的方式。

相關推薦:

詳解PHP如何利用socket傳送HTTP請求

##php如何透過http請求傳送陣列的實例分享

微信小程式之http請求封裝詳解及實例程式碼

以上是幾種PHP發送HTTP請求的方式分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn