php使用socket post数据到其它web服务器的方法


Posted in PHP onJune 02, 2015

本文实例讲述了php使用socket post数据到其它web服务器的方法。分享给大家供大家参考。具体实现方法如下:

function post_request($url, $data, $referer='') {
  // Convert the data array into URL Parameters like a=b&foo=bar etc.
  $data = http_build_query($data);
  // parse the given URL
  $url = parse_url($url);
  if ($url['scheme'] != 'http') { 
    die('Error: Only HTTP request are supported !');
  }
  // extract host and path:
  $host = $url['host'];
  $path = $url['path'];
  // open a socket connection on port 80 - timeout: 30 sec
  $fp = fsockopen($host, 80, $errno, $errstr, 30);
  if ($fp){
    // send the request headers:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    if ($referer != '')
      fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);
    $result = ''; 
    while(!feof($fp)) {
      // receive the results of the request
      $result .= fgets($fp, 128);
    }
  }
  else { 
    return array(
      'status' => 'err', 
      'error' => "$errstr ($errno)"
    );
  }
  // close the socket connection:
  fclose($fp);
  // split the result header from the content
  $result = explode("\r\n\r\n", $result, 2);
  $header = isset($result[0]) ? $result[0] : '';
  $content = isset($result[1]) ? $result[1] : '';
  // return as structured array:
  return array(
    'status' => 'ok',
    'header' => $header,
    'content' => $content
  );
}
//使用方法
// Submit those variables to the server
$post_data = array(
  'test' => 'foobar',
  'okay' => 'yes',
  'number' => 2
);
// Send a request to example.com 
$result = post_request('http://www.example.com/', $post_data);
if ($result['status'] == 'ok'){
  // Print headers 
  echo $result['header']; 
  echo '<hr />';
  // print the result of the whole request:
  echo $result['content'];
}
else {
  echo 'A error occured: ' . $result['error']; 
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php面向对象的方法重载两种版本比较
Sep 08 PHP
php代码书写习惯优化小结
Jun 20 PHP
php Session存储到Redis的方法
Nov 04 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
分享PHP守护进程类
Dec 30 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
php自动给网址加上链接的方法
Jun 02 #PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 #PHP
php正则preg_replace_callback函数用法实例
Jun 01 #PHP
php实现读取和写入tab分割的文件
Jun 01 #PHP
php从文件夹随机读取文件的方法
Jun 01 #PHP
php计算整个目录大小的方法
Jun 01 #PHP
php获取系统变量方法小结
May 29 #PHP
You might like
php header Content-Type类型小结
2011/07/03 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
基于Python的接口测试框架实例
2016/11/04 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python二进制文件的转译详解
2019/07/03 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
python元组拆包实现方法
2021/02/28 Python
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
工作会议主持词
2014/03/17 职场文书
奥利奥广告词
2014/03/20 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
联村联户简报
2015/07/21 职场文书
2016党校学习心得体会
2016/01/07 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js