php post 请求

php模拟post请求发送文件 由于项目需要,需要本地服务器接收数据后,再将数据转发到另外一台服务器上,故要用到模拟post请求发送数据,当然数据中也包含文件流。 curl是php比较常用的方式之一,一般代码如下: $params1 = "test"; $params2 = "@".$absolute_path;//如果是文件 则参数为"@"+绝对路径 $post_data = array( 'params1' => 阅读详情

file_get_contents版本:

01 /**
02  * 发送post请求
03  * @param string $url 请求地址
04  * @param array $post_data post键值对数据
05  * @return string
06  */
07 function send_post($url, $post_data) {
08  
09     $postdata = http_build_query($post_data);
10     $options = array(
11         'http' =>; array(
12             'method' =>; 'POST',
13             'header' =>; 'Content-type:application/x-www-form-urlencoded',
14             'content' =>; $postdata,
15             'timeout' =>; 15 * 60 // 超时时间(单位:s)
16         )
17     );
18     $context = stream_context_create($options);
19     $result = file_get_contents($url, false, $context);
20  
21     return $result;
22 }

使用如下:

1 post_data = array(
2     'username' => 'stclair2201',
3     'password' => 'handan'
4 );
5 send_post('http://blog.snsgou.com', $post_data);

 

实战经验:

当我利用上述代码给另一台服务器发送http请求时,发现,如果服务器处理请求时间过长,本地的PHP会中断请求,即所谓的超时中断,第一个怀疑的是PHP本身执行时间的超过限制,但想想也不应该,因为老早就按照这篇文章设置了“PHP执行时间限制”(【推荐】PHP上传文件大小限制大全 ),仔细琢磨,想想,应该是http请求本身的一个时间限制,于是乎,就想到了怎么给http请求时间限制搞大一点。。。。。。查看PHP手册,果真有个参数 “ timeout ”,默认不知道多大,当把它的值设大一点,问题得已解决,弱弱地做个笔记~~~

 

Socket版本:

01 /**
02  * Socket版本
03  * 使用方法:
04  * $post_string = "app=socket&version=beta";
05  * request_by_socket('blog.snsgou.com', '/restServer.php', $post_string);
06  */
07 function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30) {
08     $socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
09     if (!$socket) die("$errstr($errno)");
10     fwrite($socket, "POST $remote_path HTTP/1.0");
11     fwrite($socket, "User-Agent: Socket Example");
12     fwrite($socket, "HOST: $remote_server");
13     fwrite($socket, "Content-type: application/x-www-form-urlencoded");
14     fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . "");
15     fwrite($socket, "Accept:*/*");
16     fwrite($socket, "");
17     fwrite($socket, "mypost=$post_string");
18     fwrite($socket, "");
19     $header = "";
20     while ($str = trim(fgets($socket, 4096))) {
21         $header .= $str;
22     }
23  
24     $data = "";
25     while (!feof($socket)) {
26         $data .= fgets($socket, 4096);
27     }
28  
29     return $data;
30 }

 

Curl版本:

01 /**
02  * Curl版本
03  * 使用方法:
04  * $post_string = "app=request&version=beta";
05  * request_by_curl('http://blog.snsgou.com/restServer.php', $post_string);
06  */
07 function request_by_curl($remote_server, $post_string) {
08     $ch = curl_init();
09     curl_setopt($ch, CURLOPT_URL, $remote_server);
10     curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
11     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
12     curl_setopt($ch, CURLOPT_USERAGENT, "snsgou.com's CURL Example beta");
13     $data = curl_exec($ch);
14     curl_close($ch);
15  
16     return $data;
17 }

 

Curl版本(2)

01 /**
02  * 发送HTTP请求
03  *
04  * @param string $url 请求地址
05  * @param string $method 请求方式 GET/POST
06  * @param string $refererUrl 请求来源地址
07  * @param array $data 发送数据
08  * @param string $contentType
09  * @param string $timeout
10  * @param string $proxy
11  * @return boolean
12  */
13 function send_request($url, $data, $refererUrl = '', $method = 'GET', $contentType = 'application/json',$timeout = 30, $proxy = false) {
14     $ch = null;
15     if('POST' === strtoupper($method)) {
16         $ch = curl_init($url);
17         curl_setopt($ch, CURLOPT_POST, 1);
18         curl_setopt($ch, CURLOPT_HEADER,0 );
19         curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
20         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
21         curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
22         curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
23         if ($refererUrl) {
24             curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
25         }
26         if($contentType) {
27             curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType));
28         }
29         if(is_string($data)){
30             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
31         } else {
32             curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
33         }
34     } else if('GET' === strtoupper($method)) {
35         if(is_string($data)) {
36             $real_url = $url. (strpos($url, '?') === false ? '?' : ''). $data;
37         } else {
38             $real_url = $url. (strpos($url, '?') === false ? '?' : ''). http_build_query($data);
39         }
40  
41         $ch = curl_init($real_url);
42         curl_setopt($ch, CURLOPT_HEADER, 0);
43         curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType));
44         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
45         curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
46         if ($refererUrl) {
47             curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
48         }
49     } else {
50         $args = func_get_args();
51         return false;
52     }
53  
54     if($proxy) {
55         curl_setopt($ch, CURLOPT_PROXY, $proxy);
56     }
57     $ret = curl_exec($ch);
58     $info = curl_getinfo($ch);
59     $contents = array(
60             'httpInfo' => array(
61                     'send' => $data,
62                     'url' => $url,
63                     'ret' => $ret,
64                     'http' => $info,
65             )
66     );
67  
68     curl_close($ch);
69     return $ret;
70 }

调用 WCF接口 的一个例子:$json = restRequest($r_url,'POST', json_encode($data));

php中修改浏览器的User-Agent来伪装你的浏览器和操作系统 得到HTTP_USER_AGENT 的方法很简单,比如php代码: 复制代码 代码如下: <?php print_r($_SERVER); ?> 复制代码 代码如下: <?php print_r($_SERVER[‘HTTP_USER_AGENT’]); ?> 这两种都可以得到User-Agents和IP等信息,最好配合正则表达式,对信息进行筛选剔除。 ————– User-Agents列表————- Internet Explorer 6 Internet Explorer 7 Internet Explorer 8 Firefox Chrome Safari Netscape Oper 立即下载

相关推荐

华为云Stack 8.X 流量模型分析(一)

​ 当内部需要提供对外服务时(如对外发布Web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。​ 内部地址要访问公网上的服务时(如Web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。

Ciyaso的博客 3247

模拟发送http请求

file_get_contents版本: view source ? 01 /** 02  * 发送post请求 03  * @param string $url 请求地址 04  * @pa

climbs的专栏 1235

ArcGIS Pro SDK (二十五)工作流管理器

【代码】ArcGIS Pro SDK (二十五)工作流管理器。

Winemonk 494

站长后台添加商品失败,提示Duplicate entry ‘0‘ for key ‘PRIMARY‘错误问题解决

最近再更换网站服务器,怕出问题还特地备份网站时手动备份了下数据库。可导入数据库时总提示失败,把数据库内容全删除了,重新导入了十几次都是同样效果。 想着要出问题,果然登录沉梦站长后台后添加商品时提示失败,提示Duplicate entry '0' for key 'PRIMARY'错误,用户前台注册时也提示这个,无法添加新商品和新用户无法注册了。 问题大了啊,赶紧去百度,忙活了一晚上都无法解决,凌晨时终于问题解决,如释重负,上来给大家分享下这个问题解决方法。 其实非常简单,说明下这个问题就是数据库插

友商网络 553

42、使用mmrotate中k3det进行旋转目标检测,并进行mnn部署和ncnn部署

基本思想:仍然是身份证分割,并进行ncnn和mnn的c++的部署开发

sxj731533730 5713

Vue3 - 手机移动端H5网页强力解决弹起软键盘后页面被挤压变形或页面整体上移问题,点击input输入框键盘弹出底部被上推往上顶遮挡及各种问题(兼容安卓苹果ios手机,微信公众号网页微信内置浏览器)

vue3,h5网页,input输入框组件,vue3 h5软键盘弹出,vue3输入框,键盘弹起时页面整体上移问题,uni,H5页面,解决软键盘弹起页面被挤压、被往顶的问题,解决vue3输入框,键盘弹起时页面整体上移问题,vue3调用手机系统软键盘,页面窗口被顶起,布局定位失效,解决VUE3软键盘弹起导致页面fixed定位元素被顶上去,输入法软键盘弹起,窗口顶起,变形解决办法,Vue中input组件在IOS设备上弹出软键盘时页面整体上移问题的解决方案,以及input组件聚焦后弹出软键盘固定在,Vue3软键盘把界

🏆 前端领域优质创作者 1万+

Error500错误的解决方法(俩种解决方法)

Windows7IIS500–内部服务器错误解决方案 1、解决方法:打开IIS,在功能视图中找到“错误页”,双击进去后,看最右边的“操作”下的“编辑功能设置…”,将“错误响应”下的“详细错误”勾上。 2、打开控制面板→管理工具→Internet信息服务(IIS)管理器→双击“ASP”图标,然后在右边的窗口中展开“调试属性”,把“将错误发送到浏览器”设为True即可。微软基于安全性考虑...

weixin_42564434的博客 3万+

RV1126 ISP调参实战:3A算法参数调节的7个技巧

││ │ DEMOSAIC (去马赛克) │ ││ │ GAMMA (Gamma 校正) │ ││ │ DPC (坏点校正) │ ││。

小灰灰的博客 670

jmeter ---模拟发送TCP/UDP/HTTP/FTP等请求包

JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, Boot servers and many-many other systems。 JMeter UDP插件下载地址:http://jmeter-plugins.org/downloads/all/,下载JMeterPlugins-Extras-X.X.X.zip其中包含UDP ...

weixin_33757911的博客 1606

NEU-DET 冷轧钢缺陷检测:基于 YOLOv8 的目标检测与可视化 UI 实现

冷轧钢的生产过程中,由于设备故障、工艺问题或者人为因素,钢板表面可能会出现多种缺陷,如划痕、裂纹、孔洞等,这些缺陷会严重影响钢材的质量。它比之前的版本(如 YOLOv5、YOLOv4)在速度和精度上都有显著提升,并且对硬件要求较低,适合进行工业界面和嵌入式系统的应用。这些版本相较于更大型的模型(如 YOLOv8x)具有更快的推理速度和较低的资源占用,适合工业生产线中的实时应用。通过将训练好的模型部署到工业生产线摄像头中,我们可以实现实时的缺陷检测,极大地提升生产效率和产品质量。

YOLO 739

SolidWorks速成教程P3-5【零件 | 第五节】——异形孔向导&线性阵列&镜像

这节介绍异形孔向导、线性阵列、镜像。

嵌入式阿齐Archie 6077

PHP post请求 PHP 发送post请求

// post请求 function request_by_curl($url, $data , $access_token="") { // $url[url请求地址] // $data[请求数据] // $access_token[请求头] // 请求头 $header='Content-Type: application/json;charset=utf-8'; $...

PHP,Java--在世悟空的博客 1001

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php通过post请求_PHP中Http协议post请求参数

本文给大家介绍PHP中Http协议post请求参数,具体内容如下所示:WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦。接下来的几篇博文中,我将结合自己的笔记和理解,详细解释PHP进行POST请求的几种方法,如有错误,烦请指正。HTTP协议信息是WEB开发中的一项重要内容...

weixin_39780784的博客 692

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

php 模拟post请求,php模拟post请求的三种常见用法

本篇文章主要介绍php模拟post请求的三种常见用法,感兴趣的朋友参考下,希望对大家有所帮助。本文实例讲述了php实现模拟post请求的方法,具体如下:class Request{public static function post($url, $post_data = '', $timeout = 5){//curl$ch = curl_init();curl_setopt ($ch, CUR...

weixin_36249618的博客 1164

php 模拟post提交请求,调用接口

有两种写法可以调用接口获取返回数据(如下): 写法 一: 方法,模拟post进行url请求 /** * 模拟post进行url请求 * @param string $url * @param string $param */ function request_post($url = '', $param = '') { if (...

Crazy_shark的博客 6112

php 同步post请求,PHP发送POST请求的三种方式

如何用php向服务器发送post请分享应用的api写在服务器的***/update_device/目录下,数据格式:id=%s&syst用PHP向服务器发送HTTP的POST请分享。php发送get,post请分享的几种方法一吵架就能把几年前的事都翻出来说的人最会伤人。POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器,但速度慢。而Get方法会将所要传输的数据...

weixin_42351606的博客 500

php https post请求数据,php post 请求https接口

实例/医院*POST请求https接口返回内容*@paramstring$url[请求的URL地址]*@paramstring$post[请求的参数]*@returnstring*/publicfunctionpost_curls($url,$post){$curl=curl_init();//启动一个CURL会话curl_setopt($curl,CU...

weixin_31290873的博客 495

php通过post请求_php代码post请求

/*** 发送post请求* @param string $url 请求地址* @param array $post_data post键值对数据* @return string*/function send_post($url, $post_data) {$postdata = http_build_query($post_data);$options = array('http' => ...

weixin_28923455的博客 704

php 发送post请求,php如何发送post请求

这篇文章主要介绍了php发送post请求的三种方法,分别使用curl、file_get_content、fsocket来实现post提交数据,需要的朋友可以参考下。相关推荐:《php入门教程》方法一:file_get_content版本/*** 发送post请求* @param string $url 请求地址* @param array $post_data post键值对数据* @return...

weixin_33168937的博客 952

php post 请求https接口

PHP POST以及GET 请求HTTP接口1.POST2.GET 1.POST ** * POST请求https接口返回内容 * @param string $url [请求的URL地址] * @param string $post [请求的参数] * @return string */ public function post_c...

心学的博客 3637

php的get、post请求

get post请求出现的一些乱码 直接上代码,一看便知 /** * get 请求 * @param string $url 提交地址 */ function curl_get($url = '', $header=[]){ $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, true); curl_seto...

m0_37632915的博客 352

php模拟curl post请求,php post请求,php模拟请求!

<?php class functions { /** * @param $url 请求网址 * @param bool $params 请求参数 * @param int $ispost 请求方式 * @param int $https https协议 * @return bool|mixed */ function curlRequest($url, $params = false, $ispost = 0, $https = 0) { $httpInfo = array();

Jeson的博客 1万+

php最简单post请求,PHP发送POST请求的常用方式

在PHP开发的过程中经常需要发送POST请求,POST相比GET要安全很多,而且传输的数据量也较大。下面PHP程序员雷雪松就带大家一起总结下PHP发送POST请求的几种常用方式,分别使用curl、file_get_content来实现POST请求和传递参数。1、curl实现PHP POST请求和传递参数。$data=array("username"=>"raykaeso","name"=&g...

weixin_42517044的博客 1万+

thinkphp ,php post发送json请求,就收post请求

发送方的代码如下 <?php namespace Api\Controller; use Think\Controller; class IndexController extends Controller { public function send() { ini_set("error_reporting","E_ALL & ~E_NOTICE");

别在熬夜了! 1万+

PHP 发送HTTP post请求发送和获取

发送POST请求 和GET方法一样,POST方法也是HTTP协议中的一个重要组成部分。POST方法一般用来向目的服务器发出请求,并附有请求实体。 POST被设计成用统一的方法实现下列功能:      o 对现有资源的注释(Annotation of existing resources);      o 向电子公告栏、新闻组,邮件列表或类似讨论组发送消息;      o 提

fox1987的专栏 8837
上一篇: linux下的ngrep 安装使用
下一篇: Ext 中字段的排序
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值