热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP发送HTTPpost请求发送和获取

发送POST请求和GET方法一样,POST方法也是HTTP协议中的一个重要组成部分。POST方法一般用来向目的服务器发出请求,并附有请求实体。POST被

发送POST请求

和GET方法一样,POST方法也是HTTP协议中的一个重要组成部分。POST方法一般用来向目的服务器发出请求,并附有请求实体。
POST被设计成用统一的方法实现下列功能:
     o 对现有资源的注释(Annotation of existing resources);
     o 向电子公告栏、新闻组,邮件列表或类似讨论组发送消息;
     o 提交数据块,如将表格(form)的结果提交给数据处理过程;
     o 通过附加操作来扩展数据库。
     o 也可用来上传文件。
在所有的HTTP的POST请求中,必须指定合法的内容长度(Content-Length)。
如果HTTP/1.0服务器在接收到请求消息内容时无法确定其长度,就会返回400(非法请求)代码。
应用程序不能缓存对POST请求的回应,因为做为应用程序来说,它们没有办法知道服务器在未来的请求中将如何回应。
POST方式和GET方法的最大区别就是把发送的数据和URI地址分离。请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form- urlencoded
Post请求格式如下:
POST /login.asp HTTP/1.1
Accept: */*
Referer: http://www.wantsoft.com
Accept-Language: zh-cn,en-us;q=0.5
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: www.wantsoft.com
Content-Length: 35
Pragma: no-cache
Cache-Control: no-cache
username=wantsoft&password=password   //post的数据

php的post请求的sample如下:

1: <;?php

2: $srv_ip &#61; &#39;127.0.0.1&#39;;//你的目标服务地址或频道.

3: $srv_port &#61; 80;

4: $url &#61; &#39;/helloworld/?r&#61;helloworld&#39;; //接收你post的URL具体地址

5: $fp &#61; &#39;&#39;;

6: $resp_str &#61; &#39;&#39;;

7: $errno &#61; 0;

8: $errstr &#61; &#39;&#39;;

9: $timeout &#61; 10;

10: $post_str &#61; "username&#61;demo&str&#61;aaaa";//要提交的内容.

11:

12: //echo $url_str;

13: if ($srv_ip &#61;&#61; &#39;&#39;){

14: echo(&#39;ip or dest url empty<;br>&#39;);

15: }

16: //echo($srv_ip);

17: $fp &#61; fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);

18: if (!$fp){

19: echo(&#39;fp fail&#39;);

20: }

21: $content_length &#61; strlen($post_str);

22: $post_header &#61; "POST $url HTTP/1.1\r\n";

23: $post_header .&#61; "Content-Type: application/x-www-form-urlencoded\r\n";

24: $post_header .&#61; "User-Agent: MSIE\r\n";

25: $post_header .&#61; "Host: ".$srv_ip."\r\n";

26: $post_header .&#61; "Content-Length: ".$content_length."\r\n";

27: $post_header .&#61; "Connection: close\r\n\r\n";

28: $post_header .&#61; $post_str."\r\n\r\n";

29: fwrite($fp,$post_header);

30: while(!feof($fp)){

31: $resp_str .&#61; fgets($fp,512);//返回值放入$resp_str

32: }

33: fclose($fp);

34: echo($resp_str);//处理返回值.

35: //unset ($resp_str);

36: ?>

获取POST请求

一般我们都用$_POST或$_REQUEST两个预定义变量来接收POST提交的数据。但如果提交的数据没有变量名&#xff0c;而是直接的字符串&#xff0c;则需要使用其他的方式来接收。

方法一&#xff1a; 使用全局变量$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]来获取。

      在$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]存放的是POST过来的原始数据。而$_POST或$_REQUEST存放的是PHP以key&#61;>value的形式格式化以后的数据。 但$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]中是否保存POST过来的数据取决于centent-Type的设置&#xff0c;即POST数据时必须显式示指明Content-Type: application/x-www-form-urlencoded&#xff0c;POST的数据才会存放到 $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]中。(该部分需要php.ini中设置 always_populate_raw_post_data &#61; On 才能行的通)

方法二&#xff1a; 使用file_get_contents("php://input")来获取。

     对于未指定 Content-Type 的POST数据&#xff0c;则可以使用file_get_contents("php://input");来获取原始数据。事实上&#xff0c;用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。 所以用方法二是最保险的方法。

1: echo "
Post Data is :
"
;

2: foreach($_POST as $key&#61;>$val)

3: {

4: echo "key:$key,val:$val
"
;

5: }

6:

7: $data &#61; file_get_contents("php://input");

8: echo $data.&#39;
&#39;;

9: echo $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];

结果如下&#xff1a;

image


转载于:https://www.cnblogs.com/lovemdx/archive/2013/03/13/2957784.html


推荐阅读
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • 近期,某用户在重启RAC一个节点的数据库实例时,发现启动速度非常慢。同时业务部门反馈连接RAC存活节点的业务也受影响。通过对日志的分析, ... [详细]
author-avatar
城隍山人因
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有