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.  
  5. //里面的换行代表 \r\n 注意拷贝的代码后面可能有空格
  6. $http = <<<eof
  7. GET / HTTP/1.0
  8. Accept: */*
  9. User-Agent: Lowell-Agent
  10. Host: www.baidu.com
  11. Connection: Close
  12.  
  13. eof;
  14.  
  15. socket_write($socket, $http, strlen($http));
  16.  
  17. while($str = socket_read($socket, 1024))
  18. {
  19. echo $str;
  20. }
  21.  
  22. socket_close($socket);

fsockopen方式:

  1. $fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);
  2.  
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. $out = "GET / HTTP/1.1\r\n";
  7. $out .= "Host: www.baidu.com\r\n";
  8. $out .= "Connection: Close\r\n\r\n";
  9. fwrite($fp, $http);
  10. while (!feof($fp)) {
  11. echo fgets($fp, 128);
  12. }
  13. fclose($fp);
  14. }

原始socket方式:

  1. $fp = stream_socket_client("tcp://www.baidu.com:80", $errno, $errstr, 30);
  2. if (!$fp) {
  3. echo "$errstr ($errno)<br />\n";
  4. } else {
  5.  
  6. $http = <<<eof
  7. GET / HTTP/1.0
  8. Accept: */*
  9. User-Agent: Lowell-Agent
  10. Host: www.baidu.com
  11. Connection: Close
  12.  
  13. eof;
  14.  
  15. fwrite($fp, $http);
  16. while (!feof($fp)) {
  17. echo fgets($fp, 1024);
  18. }
  19. fclose($fp);
  20. }

stream  方式(get):

  1. $http = <<<eof
  2. Host: www.baidu.com
  3. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  5. Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
  6. 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
  7. Connection: keep-alive
  8. Cache-Control: max-age=0
  9. eof;
  10.  
  11. $hdrs = array(
  12. 'http' =>array(
  13. 'header' => $http,
  14. 'timeout'=>1, //超时 秒
  15. 'method' => 'GET', //默认方式
             'protocol_version' => '1.1', //默认为 1.0
  16. ),
  17.  
  18. );
  19.  
  20. //参数格式参考 http://php.net/manual/zh/context.http.php
  21. //curl方式的格式可以参考; http://php.net/manual/zh/context.curl.php
  22.  
  23. $context = stream_context_create($hdrs);
  24. echo file_get_contents('http://www.baidu.com', 0, $context);

stream  方式 post:

  1. $postdata = http_build_query(array('act'=>'save', 'id'=>387171));
  2.  
  3. $http = <<<eof
  4. Host: www.baidu.com
  5. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  7. Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
  8. Content-Type: application/x-www-form-urlencoded; charset=UTF-8
  9. 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
  10. Connection: keep-alive
  11. Cache-Control: max-age=0
  12. eof;
  13.  
  14. #注意post方式需要增加Content-Type
  15.  
  16. $hdrs = array(
  17. 'http' =>array(
  18. 'header' => $http,
  19. 'timeout'=>1, //超时 秒
  20. 'method' => 'POST',
  21. 'content' => $postdata,
             'protocol_version' => '1.1', //默认为 1.0
  22. ),
  23.  
  24. );
  25.  
  26. //参数格式参考 http://php.net/manual/zh/context.http.php
  27. //curl方式的格式可以参考; http://php.net/manual/zh/context.curl.php
  28.  
  29. $context = stream_context_create($hdrs);
  30. echo file_get_contents('http://test.cm/song.php', 0, $context);

注意:http1.1 中必须包含 Host 头, 而 http1.0中则可以没有

HTTP超文本传输协议-HTTP/1.1中文版

socket 发送发送HTTP请求的更多相关文章

  1. C# Socket模拟发送接收

    Socket简介 通过TCP/IP与仪器或设备通讯,在C#语言中,我们通常采用Socket.本项目是一个简单的Socket建立服务监听与Socket作为客户端请求的一个示例. 项目结构 客户端项目 S ...

  2. [NIO]用dawn发送接收HTTP请求

    HTTP协议的下层使用的是tcp.所以我们建立一个tcp连接就能发送接收http请求.dawn底层使用了nio.可是经过dawn的封装之后,我们在编写代码的时候,就和使用普通的堵塞式socket一样 ...

  3. socket 异步 发送 接收 数据

    Socket socketClints = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); / ...

  4. HttpUtil工具类,发送Get/Post请求,支持Http和Https协议

    HttpUtil工具类,发送Get/Post请求,支持Http和Https协议 使用用Httpclient封装的HttpUtil工具类,发送Get/Post请求 1. maven引入httpclien ...

  5. 如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

    理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环 ...

  6. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

    第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

  7. ZeroMQ接口函数之 :zmq_send – 在一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-send zmq_send(3)              ØMQ Manual - ØMQ/4.1.0 Name ...

  8. ZeroMQ接口函数之 :zmq_sendmsg – 从一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg zmq_sendmsg(3)        ØMQ Manual - ØMQ/4.1.0 Name ...

  9. ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  10. 从零开始学习Node.js例子七 发送HTTP客户端请求并显示响应结果

    wget.js:发送HTTP客户端请求并显示响应的各种结果 options对象描述了将要发出的请求.data事件在数据到达时被触发,error事件在发生错误时被触发.HTTP请求中的数据格式通过MIM ...

随机推荐

  1. python study - 正则表达式

    第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...

  2. Foundation框架 - 快速创建跨平台的网站页面原型

    API参考:http://foundation.zurb.com/docs/ 作为网页设计和开发人员,我们面临着以下几个严峻的问题: 每天,人们用来上网的设备种类和数量都在不断上升. 为每种设备设计开 ...

  3. Android TextView换行问题

    本文转载于:http://niufc.iteye.com/blog/1729792 ndroid的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,原因是: 1) TextVie ...

  4. 【转】iOS 删除已经配置的类库和移除CocoaPods

    原文网址:http://www.jianshu.com/p/552f21a989ba 引言 我们使用CocoaPods非常高效地将一些第三方类库导入到我们的项目中,但是不由得产生一个疑问:如果发现某个 ...

  5. Win7+VS2010环境下CEGUI 0.8.4编译过程详解

    转载▼   1. 在http://cegui.org.uk/download 下载CEGUI源码包 cegui-0.8.4 以及CEGUI依赖库(Windows / Apple OS X only) ...

  6. gcviewer待整理

    官网:https://github.com/chewiebug/GCViewer G1 Gabage Collector -XX:+UnlockExperimentalVMOptions -XX:+U ...

  7. android向web提交参数的4种方式总结,附带网站案例源码

    第一种:基于http协议通过get方式提交参数 1.对多个参数的封装 public static String get_save(String name, String phone) { /** * ...

  8. jquery layer弹窗弹层插件 小巧强大

    /* 先去官网下载最新的js  http://sentsin.com/jquery/layer/ ①引用jquery ②引用layer.min.js */ 触发弹层的事件可自由绑定,如: $('#id ...

  9. php 数组排序 sort asort ksort

    <?php $arr = array('d'=>'sdf', 'r'=>'sdf', 'a'=> 'eee'); //sort($arr); // 对数组的值进行重排, 删除之 ...

  10. 通过命令行安装Android app

    手动安装安卓app的命令为:adb install -r C:\Users\Lihao\workspace\Appium_Demo\apps\app_F_1.3.0.apk