Home  >  Article  >  Backend Development  >  Use http protocol to publish blog post comments

Use http protocol to publish blog post comments

WBOY
WBOYOriginal
2016-08-08 09:19:18812browse

 This blog post follows "php uses socket to send GET and POST requests". We need to use the Http class encapsulated above to consider how to submit comments to blog posts in the blog park through php scripts.

Principle:

Before doing this, we must first understand that the essence of submitting comments to a blog post is to send a post request through the http protocol server. What do we need to do before posting a comment? Yes, you must log in. But logging in is another matter, which we won’t discuss here. After the user logs in, the server sets a cookie to the client. http is stateless. That is to say, after the client sends a request to the server, the server returns a response. One communication is completed. The server will not remember who just sent the request to it. Therefore, the client needs to send a request to the server with the cookie set by the server and inform the server of its identity, and the server generates a response based on the cookie. The principle is so simple, let’s take a look at our practical part.

Preparation work:

In order to complete this test, I registered another blog account (DeanHuangChopper). After logging into the blog park, open my blog (DeanChopper) and open one of my blog posts at will, such as " Combined with the article "Understanding the Buffering Mechanism of the PHP ob Function" (I use the Firefox browser, the biggest advantage is that you can intuitively see what parameters are sent to the server), open the developer options, and prepare to record the process of sending comments. I just write a comment and leave a comment. This time the request is logged via developer options.

We only need to pay attention to the request header.

 Obviously, we set the request header information through the setHeader() method of the Http class and send it through the post() method. Let’s first carefully analyze the request header information. Host, Content-type, and Content-length will be set by default through some http methods, and we don’t need to add them. But it must be noted that the Content-type type is "application/json; charset=UTF-8", which is different from the "application/x-www-form-urlencoded" set by Http by default. The request body is in json form, not in array form, so the original Http post method needs to be rewritten.

<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>

After re-modifying the Http class, we can complete the writing of the main code of this article. Although in theory, you only need to set the cookie value when setting the header information, it is best to send all the header information to increase the success rate.

Before sending a comment, take a look at the sending parameters:

We only need to fill in the content we want to send after "body".

Code part:

Finally, the main code of this article:

<?<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';

The sending process may be a bit slow, please be patient.

 Finally, I don’t mind bloggers using this blog post as a test for sending comments, but please pay attention to the wording.

The above introduces the use of http protocol to publish blog post comments, including aspects of content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn