当前位置: 首页 > news >正文

php如何发post请求

 /**
     *  post提交数据
     * @param  string $url 请求Url
     * @param  array $datas 提交的数据
     * @return url响应返回的html
     */
    function sendPost($url, $datas) {
        $temps = array();
        foreach ($datas as $key => $value) {
            $temps[] = sprintf('%s=%s', $key, $value);
        }
        $post_data = implode('&', $temps);
        $url_info = parse_url($url);
        if(empty($url_info['port']))
        {
            $url_info['port']=80;
        }
        $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";         //get请求,这里就改为get
        $httpheader.= "Host:" . $url_info['host'] . "\r\n";
        $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
        $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";       //描述HTTP消息实体的传输长度
        $httpheader.= "Connection:close\r\n\r\n";
        $httpheader.= $post_data;
        $fd = fsockopen($url_info['host'], $url_info['port']);          //post请求
        fwrite($fd, $httpheader);
        $gets = "";
        $headerFlag = true;
        while (!feof($fd)) {                          //检测是否到达了文件末尾,如果服务器没有关闭fsockopen,feof会等到超时   默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。
            if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
                break;
            }
        }
        while (!feof($fd)) {
            $gets.= fread($fd, 128);     //如果只是想将一个文件的内容读入到一个字符串中,请使用 file_get_contents(),它的性能比 fread() 好得多
        }
        fclose($fd);

        return $gets;
    }

亲测好用

转载于:https://www.cnblogs.com/hanshuai0921/p/7928975.html

相关文章:

  • let和var的一个问题
  • aix 查看占用内存高的进程
  • WIN7 U盘安装
  • [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器...
  • MongoDB(课时10 数组)
  • vue+vuex+axios+echarts画一个动态更新的中国地图
  • 你绝不能错过的效率神器 —— Alfred
  • Clojure CLR 入门
  • 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
  • 配置ssh免密码登陆配置和ssh原理
  • 基于MVC4+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码
  • zxing二维码的生成与解码(C#)
  • DelphiMVC拦截器介绍
  • MySQL主键添加/删除
  • 成为优秀Java程序员的10个要点
  • Docker容器管理
  • Effective Java 笔记(一)
  • ES2017异步函数现已正式可用
  • ES6之路之模块详解
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux CTF 逆向入门
  • nodejs:开发并发布一个nodejs包
  • node入门
  • Python进阶细节
  • React中的“虫洞”——Context
  • Redux系列x:源码分析
  • SQLServer之创建数据库快照
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue2.x学习三:事件处理生命周期钩子
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 技术:超级实用的电脑小技巧
  • 前端性能优化——回流与重绘
  • 三分钟教你同步 Visual Studio Code 设置
  • 设计模式(12)迭代器模式(讲解+应用)
  • 手机端车牌号码键盘的vue组件
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 容器镜像
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​渐进式Web应用PWA的未来
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #QT(TCP网络编程-服务端)
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)(3.5) 遥测无线电区域条例
  • (多级缓存)缓存同步
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十)T检验-第一部分
  • (一)基于IDEA的JAVA基础10
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Scala的“=”符号简介
  • (转)Windows2003安全设置/维护