php curl 请求失败,PHP CURL库之GET、POST数据大小限制导致请求失败解决方案
背景概述:
我有一个脚本,里面定义了一个方法,方法里面是一个CURL
GET的封装。在使用过程中一起正常。突然发现有一天一直报失败警报。于是,我去查看代码,发现没有任何问题。最后通过百度,发现这个PHP的CURL库并默认情况下,当发送的数据超过1024字节的时候,不会返回响应的内容。这就是问题的所在。
封装的CURL GET函数如下:
function sendRequestGame($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$retData = curl_exec( $ch );
curl_close( $ch );
return $retData;
}
我相信这段代码极少有人会看出来问题。因为,你测试此函数请求一个URL,是能正常收到返回的。但是,假如这个URL的长度超过了1024个字节长度。试想一下?还会正常返回么?答案是否定的。因为,PHP
CURL库默认1024字节的长度不等待数据的返回。只要将以上函数修改为如下即可解决这此问题。
function sendRequestGame($url)
{
$header = array('Expect:');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$retData = curl_exec( $ch );
curl_close( $ch );
return $retData;
}
嗯。现在这个函数,我增加了一个Header。但是,注意,这个Header不能与以下Header一起使用:
'Content-Type:text/html;charset=UTF-8'
否则,依然会接收不到响应的数据。更深层次的原因我也没有去深入研究。
这个问题是在4399工作时与游戏工作室对接API时遇到的问题。这个问题估计与鸟哥提到的CURL BUG一样:《Curl的毫秒超时的一个”Bug”》
作者寒冰遇到这个问题的是,也没有精力从底层分析问题所在。鸟哥的文章从底层分析了原因。大家注意就是了。
php curl 请求失败,PHP CURL库之GET、POST数据大小限制导致请求失败解决方案相关推荐
- 导致请求失败 设备硬件出现致命错误_设备硬件出现致命错误,导致请求失败,应该怎么办?...
展开全部 先看一下是不是有硬件未驱动的,如果有,驱动一下如果没有,再62616964757a686964616fe4b893e5b19e31333365633937把所有接插件擦干净然后重新插牢,再试 ...
- 导致请求失败 设备硬件出现致命错误_设备硬件出现致命错误,导致请求失败。请求大神帮忙...
展开全部 先看一下是不是有硬件未驱动的,如果有,驱动一下如果没有,再62616964757a686964616fe59b9ee7ad9431333365646238把所有接插件擦干净然后重新插牢,再试 ...
- http请求响应的组成部分的介绍 用cherome查看请求响应内容 curl命令行的使用
http请求由3部分组成:请求行 + 请求头 + 请求体 上面是一个GET,和POST请求实例 (1)请求行:由三个组成---请求HTTP的方法,URL,http版本,之间用空格分隔开 (2)请求头: ...
- php设置请求头部,php curl如何设置自定义请求头
php curl设置头的方法:首先设置自定义请求头:然后设置"curl_setopt($ch, CURLINFO_HEADER_OUT, );":最后执行"curl_ge ...
- curl命令java_上curl java 模拟http请求
最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...
- php asp 发起post请求,PHP用curl函数POST请求到ASP页面提示无效请求
如题,一提交即返回以下信息: 错误 您所请求的网址(URL)无法获取 --------------------------– 当尝试进行以下请求时: POST /card/pay_card.aspx ...
- php curl post 下载文件,Curl提交POST请求到一个网址 如何获取返回的文件名
Curl提交POST请求到一个网址 网址会返回一个文件 如果输出会输出这个文件的内容 如何获取返回的文件名 或者如何把这个文件保存呢 function liansuo_post($url,$data) ...
- curl post json_curl 模拟 GETPOST 请求,以及 curl post 上传文件
curl 模拟 GETPOST 请求,以及 curl post 上传文件 一般情况下,我们调试数据接口,都会使用一个 postman 的工具,但是这个工具还是有点大了.事实上,我们在调试一些小功能的时 ...
- curl post请求表单_curl 模拟POST方法 发送数据
用POST方法发送数据当发起GET请求时,数据可以通过"查询字串"(query string)传递给一个URL.例如,在google中搜索时,搜索关键即为URL的查询字串的一部分: ...
最新文章
- threadx 信号量 应用_ThreadX——IPC应用之事件标志
- 使用webpack打包的后,公共请求路径的配置问题
- ACCP学习旅程之----- 使用HTML语言开发商业站点(第一章 HTML的基本标签)
- PAT L2-005 集合相似度
- python怎么自动生成测试报告_python生成接口自动化测试报告模版
- Go如何按行读取文本
- 1359C. Mixing Water
- 一道内存分配的面试题后续
- java修改配置文件参数_在java类中获取在.properties配置文件中设置的参数
- android9有深色模式吗,深色模式还是黑色模式?微信把所有人都搞懵了
- 【Python3网络爬虫开发实战】 2.3-爬虫的基本原理
- 服务器维护经验分享,医院IT运维经验分享.pdf
- 电泳涂装行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 荐书丨如何快速成为150万+小程序开发者中的一员
- RTMP网页视频抓取
- Mac右键添加Google搜索
- (一)双目标定OpenCV读双目摄像头合并图像并分割
- The end tag is unbalanced异常
- springboot企业人力资源管理系统毕业设计源码291816
- 用递归算法,把任一给定的十进制正整数转换成八进制数输出。