加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在PHP中发送没有请求数据的cURL POST?

发布时间:2020-12-13 16:54:11 所属栏目:PHP教程 来源:网络整理
导读:我的目标是向服务器发送POST请求并获得正确的响应. 注意:有角括号代表占位符. 在终端中,使用以下代码将为我提供所需的响应. curl -u user:pass -H 'Content-Type: application/xml' -X POST https://rest of url 我当前的PHP看起来像这样: $ch = curl_init
我的目标是向服务器发送POST请求并获得正确的响应.

注意:有角括号代表占位符.

在终端中,使用以下代码将为我提供所需的响应.

curl -u <user>:<pass> -H 'Content-Type: application/xml' -X POST https://<rest of url>

我当前的PHP看起来像这样:

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$uri); //$uri is the same that I use in terminal
curl_setopt($ch,CURLOPT_USERPWD,sprintf('%s:%s',$user,$pass)); //same as terminal user & pass
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$headers = array(
    'Content-Type: application/xml',//expect an xml response
);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
$curl_result = curl_exec($ch);

使用这个PHP,我收到400 Bad Request错误.

详细信息:

> POST <same url> HTTP/1.1
Authorization: Basic YWRtaW5Ac3Bhcms0NTEuY29tOnNwYXJrc29tZXRoaW5n
Host: <correct host>
Accept: */*
Content-Type: application/xml
Content-Length: -1
Expect: 100-continue

* HTTP 1.0,assume close after body
< HTTP/1.0 400 Bad request
< Cache-Control: no-cache
< Connection: close
< Content-Type: text/html

为什么我在使用PHP时遇到400 Bad Request错误,但在使用命令行时却没有?如何解决此问题,以便使用PHP获得所需的响应?

解决方法

curl_setopt($ch,CURLOPT_POSTFIELDS,array());

添加此行后,我解决了我的问题.在某种程度上,这个解决方案是有道理的但我不明白为什么需要CURLOPT_POSTFIELDS.在PHP文档中,这部分应该包含在CURLOPT_POST下,除非这只是偶然的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读