<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 異步Http2.0客戶端 Swoole-1.9.7增加了對Http2.0客戶端的支持。新增的客戶端類名為Swoole\Http2\Client,繼承自Swoole\Client,實現了Http2.0客戶端協議的完整支持。 Http2.0客戶端與Http1.1的最大差別是2.0支持了Stream并發機制,可以同時發起多個GET或POST請求。最大并發數量受限與服務器端規定的max_concurrent_streams設置。 **需要依賴nghttp2庫,編譯Swoole擴展時需要設置--enable-http2、--enable-openssl或--with-openssl-dir。** [TOC=2,3] ## **swoole_http2_client->__construct** 構造方法,與swoole_http_client的構造方法參數完全一致,共接受3個參數。 ~~~ function swoole_http2_client->__construct($host, $port, $ssl = false) ~~~ * $host 服務器的地址,如果未設置host頭,將自動使用$host參數作為默認的host頭 * $port 端口號,SSL一般為443,非SSL一般為80 * $ssl 是否啟用SSL加密,需要依賴openssl ## **swoole_http2_client->get** 發起GET請求,函數原型: ~~~ function swoole_http_client->get(string $path, callable $callback); ~~~ * $path 設置URL路徑,如/index.html,注意這里不能傳入http://domain * $callback 調用成功或失敗后回調此函數 * Http響應內容會在內存中進行數據拼接。因此如果響應體很大可能會占用大量內存 **回調函數** 與Http1.1客戶端事件回調函數不同,Http2.0回調函數中的參數為Swoole\Http2\Response對象。而不是Client本身。可使用use語法將Client對象傳遞給匿名函數。 ~~~ function callback(Swoole\Http2\Response $resp) { var_dump($resp->cookie); var_dump($resp->header); var_dump($resp->server); var_dump($resp->body); var_dump($resp->statusCode); } ~~~ * cookie 服務器設置的COOKIE信息 * header 服務器發送的Header信息 * server 底層連接與協議相關的信息 * body 服務器發送的響應包體 * statusCode 服務器發送的Http狀態碼,如200、502等 ## **swoole_http2_client->post** 發起POST請求,函數原型: ~~~ function swoole_http2_client->post(string $path, mixed $data, callable $callback); ~~~ * $path 設置URL路徑,如/index.html,注意這里不能傳入http://domain * $data 請求的包體數據,如果$data為數組底層自動會打包為x-www-form-urlencoded格式的POST內容,并設置Content-Type為application/x-www-form-urlencoded * $callback 調用成功或失敗后回調此函數 **使用實例** ``` $cli = new swoole_http2_client('127.0.0.1', 80); $cli->post('/post.php', array("a" => '1234', 'b' => '456'), function ($response) { echo "Length: " . strlen($cli->body) . "\n"; echo $cli->body; }); ``` ## **swoole_http2_client->setHeaders** 設置Http請求頭 ~~~ function swoole_http2_client->setHeaders(array $headers); ~~~ * $headers必須為鍵值對應的數組,底層會自動映射為$key: $value格式的Http標準頭格式 * setHeaders設置的Http頭在swoole_http2_client對象存活期間的每次請求永久有效 * 重新調用setHeaders會覆蓋上一次的設置 ## **swoole_http2_client->setCookies** 設置Cookie ~~~ function swoole_http2_client->setCookies(array $cookies); ~~~ * $cookies 設置COOKIE,必須為鍵值對應數組 * 設置COOKIE后在客戶端對象存活期間會持續保存 * 服務器端主動設置的COOKIE會合并到cookies數組中,可讀取$client->cookies屬性獲得當前Http2客戶端的COOKIE信息 * 重新調用setCookies方法會覆蓋已有COOKIE ```php <?php $array = array( "host" => "www.jd.com", "accept-encoding" => "gzip, deflate", 'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'accept-language' => 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,ja;q=0.2', 'user-agent' => 'Mozilla/5.0 (X11; Linux x86_64) Chrome/58.0.3026.3 Safari/537.36', ); $client = new Swoole\Http2\Client("www.jd.com", 443, true); $client->setHeaders($array); $client->setCookies(array("a" => "1", "b" => "2")); $client->get("/", function ($o) use($client) { echo "#{$client->sock} hello world 1\n"; echo $o->body; }); $client->post("/", $array, function ($o) use($client) { echo "{$client->sock} hello world 3\n"; echo $o->body; $client->close(); }); Swoole\Event::wait();
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看