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

有一个接口
urlhttps://sendcloud.sohu.com/webapi/list.create.json
官方给的文档是这样的
*请求接口(建议使用post请求,注意不要使用multipart-post):
/list.create
*参数说明:
参数类型是否必须说明描述
api_userstring是请求SC认证账号
api_keystring是请求SC认证密码
addressstring是列表别称地址例如:developers@sendcloud.org或者Developers
namestring是列表名称不能大于16个中文字
descriptionstring否列表描述不能大于85个中文字符
于是,我在命令行输入这样:
curl-d"api_user=*&api_key=*&address=runnerleer@maillist.sendcloud.org&name=demo&description=thisisademolist"https://sendcloud.sohu.com/webapi/list.create.json
提交正确,创建了一个邮件列表。
尝试构造表单提交,同样提交正确
html





但是,用PHPCURL提交,就出了问题,代码如下:
phpheader('Content-Type:text/html;charset=utf-8');
$ch=curl_init();
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_URL,'https://sendcloud.sohu.com/webapi/list.create.json');
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_AUTOREFERER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data=array(
'api_user'=>'*',
'api_key'=>'*',
'address'=>'runnerlee@maillist.sendcloud.org',
'name'=>'Abao新建的测试邮件列表',
'description'=>'这是Abao新建的测试邮件列表',
);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
if(false===$result=curl_exec($ch)){
echo'false:
';
}
var_dump(json_decode($result,true));
curl_close($ch);
这时候总是返回badusername/password,如果直接在浏览器打开接口的url也是现实badusername/password。
所以我猜测是数据没有提交上去。
百度了说设置curl_setopt($ch,CURLOPT_VERIFYHOST,true),但我一设置就报错
Notice:curl_setopt():CURLOPT_SSL_VERIFYHOSTnolongeracceptsthevalue1,value2willbeusedinsteadinF:\www\sendCloud\demo.phponline13
更加奇怪的是用同样的代码,调用/mail.send.json也就是发送邮件的接口,却能够正常提交。
请各位帮忙看看,十分感谢!
繁星淼淼
浏览 796回答 2
2回答

有只小跳蛙

有些情况下确实用curl是不行的,淘宝的接口也有这个问题,你可以通过在html页面用javascript自动跳提交表单来实现
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript