ホームページ > バックエンド開発 > PHPチュートリアル > PHP CURL POSTの送信について質問させていただきます。

PHP CURL POSTの送信について質問させていただきます。

WBOY
リリース: 2016-06-13 12:15:35
オリジナル
974 人が閲覧しました

PHP CURL POST の送信で発生した問題について教えてください
過去 2 日間、Sohu の sendCloud プラットフォームを研究していましたが、問題が発生しました。

には次のインターフェイスがあります:

https://sendcloud.sohu.com/webapi/list.create.json
ログイン後にコピー


公式ドキュメントは次のとおりです:
<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 />
ログイン後にコピー


そこで、コマンドラインにこれ​​を入力しました:
<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 />
ログイン後にコピー

正しく送信され、メーリング リストが作成されました。

フォーム送信を構築しようとすると、送信は正しくなります
<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 を使用して送信すると、問題が発生します。コードは次のとおりです。
<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 />
ログイン後にコピー

このとき、インターフェースの URL をブラウザで直接開いた場合も、常に不正なユーザー名/パスワードが返されます。
つまり、データが提出されていないのだと思います。

Baidu は、curl_setopt($ch,CURLOPT_VERIFYHOST,true) を設定するように言っていますが、設定するとすぐにエラーが発生しました
<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":["ユーザー名 / パスワードが間違っています!"]}

あなたの php コードは
array(2) { ["message"]=> string (5) を取得します) "error" ["errors"]=> array(1) { [0]=> string(24) "ユーザー名 / パスワードが間違っています!" } }

正しいユーザー名を指定しませんでしたパスワードを設定すると、当然正しい結果は得られません

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート