php curl put,PHP curl以模拟put请求,后台无法接受到数据是怎么回事?

我自己封装了curl工具类,测试表现:get,post,delete方式后台都能正确接收到前面传的参数,但是put方式就是获取不到参数.

1.相关代码:

index.php 入口请求文件

require_once 'MyCurl.class.php';

$data = ['param' => '成功', 'param1' => '这是神马'];

$res = MyCurl::send('http://localhost/servername/admin/test/ceshi', $data, 'put');

MyCurl.class.php curl工具类文件

class MyCurl

{

private static $url = ''; //请求url

private static $method = 'get'; //请求方式

private static $oriUrl = ''; //形式如 http://localhost

private static $data = []; //请求参数

public static function send($url, $data = [], $method = 'get')

{

$url or die('url can\'t be null');

self::$url = $url;

self::$method = strtoupper($method);

$urlArr = parse_url($url);

self::$oriUrl = $urlArr['scheme'] . '://' . $urlArr['host']; //形式为 http://localhost

self::$data = $data;

in_array(strtoupper(self::$method), array('GET', 'POST', 'PUT', 'DELETE')) or exit('error request method type!');

return self::doRequest();

}

/**

* 基础发起curl请求函数

* @return boolean

*/

private static function doRequest()

{

$ch = curl_init(); //初始化curl

curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时限制防止死循环

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //设置发起连接前的等待时间,如果设置为0,则无限等待。

curl_setopt($ch, CURLOPT_URL, self::$url);

curl_setopt($ch, CURLOPT_AUTOREFERER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override:' . self::$method));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //为1:curl_exec()有返回值,为0:curl_exec()无返回值,直接输出.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

//4)"User-Agent: "头的字符串。

curl_setopt($ch, CURLOPT_USERAGENT, 'SSTS Browser/1.0');

curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'); // 模拟用户使用的浏览器

switch (self::$method) {

case 'GET':

break;

case 'POST':

curl_setopt($ch, CURLOPT_POST, true); //POST方式

break;

case 'PUT':

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); //PUT方式

break;

case 'DELETE':

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); //DELETE方式

break;

default:

die('error :no method type');

break;

}

if (self::$data) {

if (self::$method == 'GET') {

curl_setopt($ch, CURLOPT_URL, self::$url . '?' . http_build_query(self::$data));

} else {

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(self::$data));

}

} else {

self::$method != 'GET' && die('POST/PUT/DELETE请求需要参数');

}

$data = curl_exec($ch); //运行curl

if (!$data) {

echo curl_error($ch);

}

curl_close($ch);

return $data;

}

}

处理请求文件,基于tp3.2

/**

* 测试类

*/

namespace Admin\Controller;

use Think\Controller;

class TestController extends Controller\RestController

{

public function ceshi()

{

$param = I('param.param');

echo '请求方法:'.$_SERVER['REQUEST_METHOD'];

echo '请求方法:'.$this->_method.'
';

echo '请求参数:';

echo $param;

print_r($_REQUEST);

parse_str(file_get_contents('php://input'), $data);

print_r($data);

$test= file_get_contents('php://input');

print_r($test);

}

}

无论怎么做都接收不了put请求方式传送过来的参数,让我很纳闷,在这上面也纠结很久了.想请fault的网友们帮忙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php是走什么协议,TCP是什么协议

TCP代表传输控制协议,是Internet协议套件中的基本协议,是一种网络通信协议;它规定如何建立和维护两个程序可以交换数据的连接,通过Internet发送信息的方式。TCP代表传输控制协议,是Internet协议套件中的基本协议&#…

php 获取相反值,php – 以相反的顺序从单向数组中获取数据

你不是在寻找阵列的反面,但是你正在寻找相反的东西.首先要更好地理解这种逆转可能会对你有所帮助.您需要每个元素的父元素.如果您遍历下一个,则父级始终是前一个.因此,如果您将前一个元素添加为父元素,那么数组的最后一个元素就是您要查找的元素.所以听起来很直接.更难的部分是…

php网页调用ckeditor,php调用ckeditor?怎么调用ckeditor

怎么调用ckeditor呢,下面小编来给大家总结一处利用php 调用ckeditor编辑器与js调用ckeditor的方法吧,其它脚本调用方法大致一样了。PHP调用FCKeditor将FCKeditor放在网站根目录在PHP文件里面,包含/FCKeditor/ckeditor/" target"_bl…

php调用selenium,通过PHP exec()执行Selenium webdriver

我构建了一个python脚本,它使用Selenium和Firefox加载一些网站并处理它们的内容。因为我想在PHP中使用该脚本的输出,所以我使用PHP的exec()函数。在我的python测试脚本如下所示:from pyvirtualdisplay import Displayfrom selenium import we…

php月历,PHP生成月历代码

PHP生成月历代码2021-01-23 11:43:565/*FunctionWrittenbyNelsonNeoh3/2004.Forthosewhowantstoutilizethiscode,pleasedonotremovethisremark.Ifyouhavedoneanyenhancementtothiscode,pleasepostthecopyathttp://www.dev-club.comPHPboard.Thankyou.Functionusage:calendar(Mo…

php yii 命令行,命令行模式(Command)

命令行模式(Command)3.2.1. 目的为了封装调用和解耦。我们有一个调用程序和一个接收器。 这种模式使用「命令行」将方法调用委托给接收器并且呈现相同的「执行」方法。 因此,调用程序只知道调用「执行」去处理客户端的命令。接收器会从调用程序中分离出来。这个模式…

怎么让PHP网页显示时有表格的效果,html的table用法(让网页的视觉效果显示出来)...

我们知道在网易博客可以用html时,是否把代码直接加入到摸板中,但是效果却不是很好。那是因为没有对代码进行很好的排列,现在我说一下用table来排列,可以很好的把特效显示出来。在html语法中table(即表格)是不可少的部分&#xff0…

php 数组排序 按值,php – 按值排序数组

我正在为我的论坛创建一个“固定”功能,我正在寻找一种方法将我的固定主题放在数组的开头,以便它们“卡在”页面的顶部.如果主题没有固定,则topic_pinned NULL,如果它被固定,则topic_pinned 0.该数组按topic_updated排序.固定主题需要在保留在页面顶部时按topic_updated保持排…

php语句结束标记,PHP结束标记“?”

本问题已经有最佳答案,请猛点这里访问。我有一个PHP结束标记的有趣现象。 我有一个由Ajax调用执行的php文件。 在php文件中包含了一个具有各种功能的php库文件。 当这个库被包含时,php响应包括一堆空行。 当我从库中删除结束标记时,这种情况就…

php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...

JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换1. JS的数据类型和访问1.1. 原始类型JS中的原始数据类型有: number , string , boolean ;声明变量使用 var 关键字./* 数字类型 */varyear2020;/* 字符串类型 */varnamezhangsan;/* 布尔类型 */varisUpdatefalse;获…

在matlab中使用spm8,在matlab中同时使用spm2,spm5,spm8

1、设置好spm2,spm5,spm8的路径。例如,都放置在“D:\Analysis_Software”2、新建一个文件夹spm_paths,用于放置调用spm2,spm5,spm8的*.m文件3、将spm_paths在matlab中进行setpath4、调用文件编写如下&#…

matlab 打开软件报错,matlab程序错误,提示如下【弄了半夜还是不行】 - 数学 - 小木虫 - 学术 科研 互动社区...

function [x,y,Y]levydistrintheorytest(t0,lambda,T,a,b);% 计算理论的二维levy分布的图象 画出来的3维曲面图% t0 :levy walk 趋于零的时间% lambda :幂律值% T:时间% a: 离散的大步长的最大值% b:小步长的最大值e…

php 上传根目录不存在,Linux 下 ---ThinkPHP 图片上传提示:上传根目录不存在!请尝试手动创建...

2016年11月15日11:15:47Windows下如果碰到如此问题,要看文件保存根路径里的rootpath,比如ThinkPHP框架里config.php文件里的的参数配置://文件上传相关配置‘UPLOAD_CONFIG‘ > array(‘mimes‘ > ‘‘, //允许上传的文件MiMe类型‘max…

mysql二级缓存,mybatis的动态sql和二级缓存

mybatis的#{}和${}的区别就像是 PreparedStatement 和statement , 使用${}接收的参数还需用Param注解修饰 , 推荐用#{}动态SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如…

mysql查找表shoe table,mysql命令行常用命令

mysql服务的启动和停止net stop mysqlnet start mysql登陆mysql服务器mysql -u用户名 -p用户密码注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP增加新用户grant 权限 on 数据库.* to 用户名登录主机 identified by “密码”如&#…

java long bigdecimal,通过Java中的long创建BigDecimal值

让我们看看如何通过long创建BigDecimal值。在这里,我们将长值设置为BigDecimal构造函数的参数。BigDecimal val1 BigDecimal.valueOf(289L);BigDecimal val2 BigDecimal.valueOf(299L);我们还可以对其执行数学运算-val2 val2.subtract(val1);以下是一个例子-示例…

python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台

Orange 简介Orange 是一个开源的数据挖掘和机器学习软件。Orange 基于 Python 和 C/C 开发,提供了一系列的数据探索、可视化、预处理以及建模组件。Orange 拥有漂亮直观的交互式用户界面,非常适合新手进行探索性数据分析和可视化展示;同时高级…

php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?

原标题:心理学中的“5大心理学测评量表”你知道多少?心理学知识中涵盖了类型丰富的心理学测评量表,你知道其中的多少呢?1、《应对方式问卷》《应对方式问卷》由肖计划等人参照国内外应对研究的问卷内容以及有关应对理论&#xff0…

php获取表单内的值,PHP获取表单里各项值总结

表单提交的方式1、GET方式功能:获取get方式提交的数据格式:$_GET[“formelement”]2、POST方式功能:获取post方式提交的数据格式:$_POST[“formelement”]3、REQUEST方式功能:获取任意方式提交的数据格式:$…

php对象魔术方法,php学习之类与对象的魔术方法的使用

原标题:php学习之类与对象的魔术方法的使用魔术方法有哪些__construct:构造方法__destuct:析构方法__call:在对象中调用一个不可访问的方法时。__call()会被调用__callStatic:__get:调用不可访问的属性__se…