This blog post undertakes "php uses socket to send GET and POST requests". To use the Http class encapsulated above, consider how Submit comments to Blog Park blog posts 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:
In order to complete this test, I registered another blog account (DeanHuangChopper). After logging in to the blog park, open my blog (DeanChopper) and randomly open one of my blog posts, such as "Understanding Buffering Using the PHP OB Function" Mechanism" article (I use 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. public function post($body) { $this->setLine('POST'); // Reset content-type $this->setHeader('Content-Type:application/json; charset=UTF-8'); // Skip the setBody method // $this->setBody($body); $this->body[]=$body; // Calculate content-length $this->setHeader('Content-length: ' . strlen($this->body[0])); $this->request(); return $this->response; }
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 parameters sent:
Code part:
Finally is 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 my blog post as a test for sending comments, but please pay attention to the wording.