如何在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下,除非这只是偶然的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |