php如何使用curl设置header头传参

php curl设置header的方法:首先初始化浏览器;然后设置浏览器,并把参数url传到浏览器的设置当中;接着以字符串形式返回到浏览器当中,并判断data是否有数据;最后通过“curl_setopt”方法设置header头即可。

php如何使用curl设置header头传参

推荐:《PHP教程》

PHP使用CURL设置header头传参以及设置Content-Type: application/json类型的后台数据接收

CURL函数

public function CurlRequest($url,$data=null,$header=null){  //初始化浏览器  $ch = curl_init();  //设置浏览器,把参数url传到浏览器的设置当中  curl_setopt($ch, CURLOPT_URL, $url);  //以字符串形式返回到浏览器当中  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //禁止https协议验证域名,0就是禁止验证域名且兼容php5.6  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);  //禁止https协议验证ssl安全认证证书  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //判断data是否有数据,如果有data数据传入那么就把curl的请求方式设置为POST请求方式  if ( !empty($data) ) {    //设置POST请求方式    @curl_setopt($ch, CURLOPT_POST, true);    //设置POST的数据包    @curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  }  //设置header头  if ( !empty($header) ) {    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  }  //让curl发起请求  $str = curl_exec($ch);  //关闭curl浏览器  curl_close($ch);  //把请求回来的数据返回  return $str;}

登录后复制

函数调用

立即学习“PHP免费学习笔记(深入)”;

$url = "http://desk.yunindex.cn/test";$jsonArr = [  'accountid' => '34',  'option' => 'chat_index',];$jsonStr = json_encode($jsonArr);  //设置了Content-Type: application/json,传参要转化为JSON,否则后台接收不到数据//header头设置$headers = array(  "Content-Type: application/json",  "Content-Length: " . strlen($jsonStr) . "",  "Accept: application/json",  "client-id:5K8264ILTKCH16CQ2502SI8ZNMTM67VS",    //自定义参数  "client-secret:C380BEC2BFD727A4B6845133519F3AD6"  //自定义参数);$data = $this->CurlRequest($url,$jsonStr,$headers);

登录后复制

后台接受 

json_encode($_SERVER)  

登录后复制

使用$_SERVER能接收到header头的信息,在header头里面设置的自定义参数会在这里面体现

结果

{"USER": "www","HOME": "/home/www","HTTP_CLIENT_SECRET": "C380BEC2BFD727A4B6845133519F3AD6",       //这是自定义的参数,跟上面传的参数相对于,会自动转化为大写跟下划线"HTTP_CLIENT_ID": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",          //这是自定义的参数,跟上面传的参数相对于,会自动转化为大写跟下划线"HTTP_ACCEPT": "application/json",  "HTTP_CONTENT_LENGTH": "40","HTTP_CONTENT_TYPE": "application/json","HTTP_HOST": "desk.yunindex.cn","SCRIPT_FILENAME": "/workspace/php/index_desk/htdocs/index.php","REDIRECT_STATUS": "200","SERVER_NAME": "desk.yunindex.cn","SERVER_PORT": "80","SERVER_ADDR": "192.168.1.90","REMOTE_PORT": "64524","REMOTE_ADDR": "192.168.1.113","SERVER_SOFTWARE": "nginx/1.15.2","GATEWAY_INTERFACE": "CGI/1.1","REQUEST_SCHEME": "http","SERVER_PROTOCOL": "HTTP/1.1","DOCUMENT_ROOT": "/workspace/php/index_desk/htdocs","DOCUMENT_URI": "/index.php","REQUEST_URI": "/test","SCRIPT_NAME": "/index.php","CONTENT_LENGTH": "40","CONTENT_TYPE": "application/json","REQUEST_METHOD": "POST","QUERY_STRING": "","FCGI_ROLE": "RESPONDER","PHP_SELF": "/index.php","REQUEST_TIME_FLOAT": 1557025085.410574,"REQUEST_TIME": 1557025085}

登录后复制

这里有一个问题,如果使用的是nginx的话,header头里的参数如果有下划线(如:client_secret),使用$_SERVER貌似会接收不到该参数,需要配置nginx.conf,在里面添加 underscores_in_headers on; 配置

file_get_contents('php://input')

登录后复制

接收参数,以流的形式接收

结果

string(40) "{"accountid":"34","option":"chat_index"}"

登录后复制

以上就是php如何使用curl设置header头传参的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2131587.html

(0)
上一篇 2025年2月24日 22:58:08
下一篇 2025年2月23日 04:18:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论