> 백엔드 개발 > PHP 튜토리얼 > 请问一个PHP CURL的POST提交遇到的有关问题

请问一个PHP CURL的POST提交遇到的有关问题

WBOY
풀어 주다: 2016-06-13 12:15:35
원래의
987명이 탐색했습니다.

请教一个PHP CURL的POST提交遇到的问题
这两天在学习搜狐的sendCloud平台,遇到一个问题。

有一个接口:

1

https://sendcloud.sohu.com/webapi/list.create.json

로그인 후 복사


官方给的文档是这样的:

1

<br />* 请求接口(建议使用post请求,注意不要使用multipart-post):<br />/list.create<br />* 参数说明:<br />参数  类型  是否必须  说明  描述<br />api_user  string  是  请求SC认证账号<br />api_key  string  是  请求  SC认证密码<br />addres  sstring  是  列表别称地址  例如:[email&#160;protected] Developers<br />name  string  是  列表名称  不能大于16个中文字<br />description  string  否  列表描述  不能大于85个中文字符<br />

로그인 후 복사


于是,我在命令行输入这样:

1

<br />curl -d "api_user=*&api_key=*&[email&#160;protected]&name=demo&description=this is a demo list" https://sendcloud.sohu.com/webapi/list.create.json<br />

로그인 후 복사

提交正确,创建了一个邮件列表。

尝试构造表单提交,同样提交正确

1

<br />    <form method="post" action="https://sendcloud.sohu.com/webapi/list.create.json"><br />        <input type="text" name="api_user" value="×" /><br /><br />        <input type="text" name="api_key" value="×" /><br /><br />        <input type="text" name="address" value="[email&#160;protected]" /><br /><br />        <input type="text" name="name" value="Abao建立的测试邮件列表" /><br /><br />        <input type="text" name="description" value="这是Abao建立的一个测试邮件列表" /><br /><br />        <input type="submit" value="submit" /><br />    </form><br />

로그인 후 복사


但是,用PHP CURL提交,就出了问题,代码如下:

1

<br /><?php<br />    header('Content-Type:text/html;charset=utf-8');<br /> $ch = curl_init();<br />  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);<br /> curl_setopt($ch, CURLOPT_URL, 'https://sendcloud.sohu.com/webapi/list.create.json');<br />    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<br />    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br />    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);<br />   curl_setopt($ch, CURLOPT_POST, 1);<br />  curl_setopt($ch, CURLOPT_HEADER, 0);<br />    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />    $data = array(<br />      'api_user' => '*',<br />       'api_key' => '*',<br />        'address' => [email&#160;protected]',<br />        'name' => 'Abao新建的测试邮件列表',<br />       'description' => '这是Abao新建的测试邮件列表',<br />  );<br />  curl_setopt($ch,CURLOPT_POSTFIELDS,$data);<br />  curl_setopt($ch,CURLOPT_POSTFIELDS,$data);<br />  if(false === $result=curl_exec($ch)) {<br />      echo 'false:<br />';<br />  }<br />   var_dump(json_decode($result,true));<br />    curl_close($ch);<br />

로그인 후 복사

这时候总是返回 bad username/password,如果直接在浏览器打开接口的url也是现实bad username/password。
所以我猜测是数据没有提交上去。

百度了说设置curl_setopt($ch,CURLOPT_VERIFYHOST,true),但我一设置就报错

1

<br />Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead in F:\www\sendCloud\demo.php on line 13<br />

로그인 후 복사


更加奇怪的是用同样的代码,调用/mail.send.json也就是发送邮件的接口,却能够正常提交。

请各位帮忙看看,十分感谢!


------解决思路----------------------
输出curl_error()和curl_errno看看?
------解决思路----------------------
你的表单得到 
{"message":"error","errors":["Bad username / password!"]}

你的 php 代码得到
array(2) { ["message"]=> string(5) "error" ["errors"]=> array(1) { [0]=> string(24) "Bad username / password!" } } 

你没有给出正确的用户名和口令,自然不能得到正确的结果

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿