このブログ投稿は、「php は GET リクエストと POST リクエストを送信するためにソケットを使用する」に従っており、php スクリプトを通じてブログ ガーデン内のブログ投稿にコメントを送信する方法を検討するには、上記でカプセル化された Http クラスを使用する必要があります。
原則:
これを行う前に、ブログ投稿にコメントを送信する本質は、http プロトコル サーバーを介して投稿リクエストを送信することであることをまず理解する必要があります。コメントを投稿する前に何をする必要がありますか?はい、ログインする必要があります。ただし、ログインについては別の問題なので、ここでは説明しません。ユーザーがログインすると、サーバーはクライアントに Cookie を設定します。 http はステートレスです。つまり、クライアントがサーバーにリクエストを送信した後、サーバーは応答を返します。 1回の通信が完了します。サーバーは、誰が自分自身にリクエストを送信したかを覚えていません。したがって、クライアントは、サーバーによって設定された Cookie を使用してサーバーにリクエストを送信し、サーバーにその ID を通知する必要があり、サーバーは Cookie に基づいて応答を生成します。原理は非常にシンプルなので、実践的な部分を見てみましょう。
準備:
このテストを完了するために、別のブログアカウント (DeanHuangChopper) を登録しました。ブログにログインした後、自分のブログ (DeanChopper) を開いて、「」などのブログ投稿の 1 つを自由に開きます。 「PHP ob 関数のバッファリングの仕組みを理解する」の記事と組み合わせて (私は Firefox ブラウザを使用しています。最大の利点は、どのようなパラメータがサーバーに送信されるかを直感的に確認できることです)、開発者向けオプションを開いて、そのプロセスを記録する準備をします。コメントを送信しています。コメントを書いてコメントを残すだけです。今回は、リクエストは開発者向けオプションを介してログに記録されます。
リクエストヘッダーにのみ注意する必要があります。
当然ですが、HttpクラスのsetHeader()メソッドでリクエストヘッダ情報を設定し、post()メソッドで送信します。まずはリクエストヘッダー情報を注意深く分析してみましょう。 Host、Content-type、Content-length は一部の http メソッドを通じてデフォルトで設定されるため、追加する必要はありません。ただし、Content-typeのタイプは「application/json; charset=UTF-8」となっており、HTTPのデフォルト設定の「application/x-www-form-urlencoded」とは異なりますので注意が必要です。リクエストボディは配列形式ではなく json 形式であるため、元の Http post メソッドを書き直す必要があります。
<span>public</span><span>function</span> post(<span>$body</span><span>) { </span><span>$this</span>->setLine('POST'<span>); </span><span>//</span><span> 重新设置content-type</span><span>$this</span>->setHeader('Content-Type:application/json; charset=UTF-8'<span>); </span><span>//</span><span> 跳过setBody方法 // $this->setBody($body);</span><span>$this</span>->body[]=<span>$body</span><span>; </span><span>//</span><span> 计算content-length</span><span>$this</span>->setHeader('Content-length: ' . <span>strlen</span>(<span>$this</span>->body[0<span>])); </span><span>$this</span>-><span>request(); </span><span>return</span><span>$this</span>-><span>response; }</span>
Http クラスを再変更すると、この記事のメインコードの記述が完了します。理論的には、ヘッダー情報を設定するときに Cookie の値を設定するだけで十分ですが、成功率を高めるには、すべてのヘッダー情報を送信することが最善です。
コメントを送信する前に、送信パラメータを確認してください:
「本文」の後に送信したいコンテンツを入力するだけです。
コード部分:
最後に、この記事のメインコード:
<?<span>php </span><span>require</span> "http.class.php"<span>; </span><span>$http</span>=<span>new</span> Http('http://www.cnblogs.com/mvc/PostComment/Add.aspx'<span>); </span>//设置头信息 <span>$http</span>->setHeader('Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'<span>); </span><span>$http</span>->setHeader('Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'<span>); </span><span>$http</span>->setHeader('Accept-Encoding:gzip, deflate'<span>); </span><span>$http</span>->setHeader('X-Requested-With:XMLHttpRequest'<span>); </span><span>$http</span>->setHeader('Referer:http://www.cnblogs.com/DeanChopper/p/4688667.html'<span>); </span><span>$http</span>->setHeader('Cookie:_ga=GA1.2.1359064105.1438444082; __gads=ID=e0c32fd6db6e2a6d:T=1438443900:S=ALNI_Mb6AAflcBD6gcdHgeE3IqVDJYnnjA; .CNBlogsCookie=C8013C91E54C151DEDA30E2C1E842982338C9054A8BB8639AC2DAB7578445BF1DF5BC49D39D8BE5FDAC33541CE4E4FA386CFD3F946EA1D79D1E34809A4CCBD7488A15641AEF685A6258CF3F03597BCAF50049F8C95A310076677598990FB2E4FB1E9671A; _5t_trace_sid=84a9ed0b086c2c127551cf911bec7b1d; _5t_trace_tms=1; _gat=1'<span>); </span><span>$http</span>->setHeader('Pragma:no-cache'<span>); </span><span>$http</span>->setHeader('Cache-Control:no-cache'<span>); <br>//设置请求体信息<br></span><span>$msg</span>='{"blogApp":"DeanChopper","postId":4688667,"body":"测试内容","parentCommentId":0}'<span>; <br>//发送post请求<br></span><span>$http</span>->post(<span>$msg</span><span>); </span><span>echo</span> 'OK';
送信プロセスは少し遅いかもしれません、しばらくお待ちください。
最後に、ブロガーがこのブログ記事をコメント送信のテストとして使用するのは構いませんが、文言には注意してください。
上記では、コンテンツの側面も含めて、http プロトコルを使用してブログ投稿のコメントを公開する方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。