当前位置:Gxlcms > PHP教程 > PHP使用socket发送HTTP请求的方法

PHP使用socket发送HTTP请求的方法

时间:2021-07-01 10:21:17 帮助过:36人阅读

本文实例讲述了PHP使用socket发送HTTP请求的方法。分享给大家供大家参考,具体如下:

socket方式:

  1. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  2. //socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>20, "usec"=>0));
  3. socket_connect($socket, 'www.baidu.com', 80);
  4. //里面的换行代表 \r\n 注意拷贝的代码后面可能有空格
  5. $http = <<<eof get="" http="" 1.0="" accept:="" *="" user-agent:="" lowell-agent="" host:="" www.baidu.com="" connection:="" close="" eof;="" socket_write($socket,="" $http,="" strlen($http));="" while($str="socket_read($socket," 1024))="" {="" echo="" $str;="" }="" socket_close($socket);="" <="" pre=""><p></p><p>fsockopen方式:</p><p></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);</li><li>if (!$fp) {</li><li> echo "$errstr ($errno)<br>\n";</li><li>} else {</li><li> $out = "GET / HTTP/1.1\r\n";</li><li> $out .= "Host: www.baidu.com\r\n";</li><li> $out .= "Connection: Close\r\n\r\n";</li><li> fwrite($fp, $http);</li><li> while (!feof($fp)) {</li><li> echo fgets($fp, 128);</li><li> }</li><li> fclose($fp);</li><li>}</li><li></li></ol></pre><p></p><p>原始socket方式:</p><p></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>$fp = stream_socket_client("tcp://www.baidu.com:80", $errno, $errstr, 30);</li><li>if (!$fp) {</li><li> echo "$errstr ($errno)<br>\n";</li><li>} else {</li><li> $http = <<<eof get="" http="" 1.0="" accept:="" *="" user-agent:="" lowell-agent="" host:="" www.baidu.com="" connection:="" close="" eof;="" fwrite($fp,="" $http);="" while="" (!feof($fp))="" {="" echo="" fgets($fp,="" 1024);="" }="" fclose($fp);="" <="" pre=""><p></p><p>stream 方式(get):</p><p></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>$http = <<<eof host:="" www.baidu.com="" user-agent:="" mozilla="" 5.0="" (windows="" nt="" 6.1;="" wow64;="" rv:27.0)="" gecko="" 20100101="" firefox="" 27.0="" accept:="" text="" html,application="" xhtml+xml,application="" xml;q="0.9,*/*;q=0.8" accept-language:="" zh-cn,zh;q="0.8,en-us;q=0.5,en;q=0.3" cookie:="" baiduid="79D98B1AD8436C57B967E111E484F1CD:FG=1;" bduss="lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU;" baidupsid="79D98B1AD8436C57B967E111E484F1CD;" bd_upn="13314352;" bd_home="1;" h_ps_pssid="10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618;" sug="3;" sugstore="0;" origin="2;" bdime="0" connection:="" keep-alive="" cache-control:="" max-age="0" eof;="" $hdrs="array(" 'http'="">array(</li><li> 'header' => $http,</li><li> 'timeout'=>1, //超时 秒</li><li> 'method' => 'GET', //默认方式</li><li>         'protocol_version' => '1.1', //默认为 1.0</li><li> ),</li><li>);</li><li>//参数格式参考 http://php.com/manual/zh/context.http.php</li><li>//curl方式的格式可以参考; http://php.com/manual/zh/context.curl.php</li><li>$context = stream_context_create($hdrs);</li><li>echo file_get_contents('http://www.baidu.com', 0, $context);</li><li></eof></li></ol></pre><p></p><p>stream 方式 post:</p><p></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>$postdata = http_build_query(array('act'=>'save', 'id'=>387171));</li><li>$http = <<<eof host:="" www.baidu.com="" user-agent:="" mozilla="" 5.0="" (windows="" nt="" 6.1;="" wow64;="" rv:27.0)="" gecko="" 20100101="" firefox="" 27.0="" accept:="" text="" html,application="" xhtml+xml,application="" xml;q="0.9,*/*;q=0.8" accept-language:="" zh-cn,zh;q="0.8,en-us;q=0.5,en;q=0.3" content-type:="" application="" x-www-form-urlencoded;="" charset="UTF-8" cookie:="" baiduid="79D98B1AD8436C57B967E111E484F1CD:FG=1;" bduss="lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU;" baidupsid="79D98B1AD8436C57B967E111E484F1CD;" bd_upn="13314352;" bd_home="1;" h_ps_pssid="10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618;" sug="3;" sugstore="0;" origin="2;" bdime="0" connection:="" keep-alive="" cache-control:="" max-age="0" eof;="" #注意post方式需要增加content-type="" $hdrs="array(" 'http'="">array(</li><li> 'header' => $http,</li><li> 'timeout'=>1, //超时 秒</li><li> 'method' => 'POST',</li><li> 'content' => $postdata,</li><li>         'protocol_version' => '1.1', //默认为 1.0</li><li> ),</li><li>);</li><li>//参数格式参考 http://php.com/manual/zh/context.http.php</li><li>//curl方式的格式可以参考; http://php.com/manual/zh/context.curl.php</li><li>$context = stream_context_create($hdrs);</li><li>echo file_get_contents('http://test.cm/song.php', 0, $context);</li><li></eof></li></ol></pre><p></p><p><span>注意:http1.1 中必须包含 Host 头, 而 http1.0中则可以没有</span></p><p>更多关于PHP相关内容感兴趣的读者可查看本站专题:《php socket用法总结》、《PHP基本语法入门教程》、《PHP错误与异常处理方法总结》及《php常用函数与技巧总结》</p><p>希望本文所述对大家PHP程序设计有所帮助。</p></li><li> </li><li> </li><li> <p></li><li> 以上就介绍了PHP使用socket发送HTTP请求的方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。 </p></eof></li></ol></pre></eof>

人气教程排行