Dieser Blog-Beitrag folgt „PHP verwendet Socket zum Senden von GET- und POST-Anfragen“. Wir müssen die oben gekapselte HTTP-Klasse verwenden, um zu überlegen, wie Kommentare zu Blog-Beiträgen im Blog-Garten über PHP-Skripte übermittelt werden.
Prinzip:
Bevor wir dies tun, müssen wir zunächst verstehen, dass das Wesentliche beim Senden von Kommentaren zu einem Blog-Beitrag darin besteht, eine Beitragsanfrage über http zu senden Protokollserver. Was müssen wir tun, bevor wir einen Kommentar veröffentlichen? Ja, Sie müssen sich anmelden. Aber das Anmelden ist eine andere Sache, auf die wir hier nicht eingehen. Nachdem sich der Benutzer angemeldet hat, setzt der Server ein Cookie für den Client. http ist zustandslos. Das heißt, nachdem der Client eine Anfrage an den Server gesendet hat, gibt der Server eine Antwort zurück. Eine Kommunikation ist abgeschlossen. Der Server merkt sich nicht, wer gerade die Anfrage an ihn gesendet hat. Daher muss der Client eine Anfrage mit dem vom Server gesetzten Cookie an den Server senden und den Server über seine Identität informieren, und der Server generiert eine Antwort basierend auf dem Cookie. Das Prinzip ist so einfach, werfen wir einen Blick auf unseren praktischen Teil.
Vorbereitung:
Um diesen Test abzuschließen, habe ich ein weiteres Blog-Konto registriert (DeanHuangChopper). Nachdem ich mich beim Blog angemeldet habe, öffne mein Blog (DeanChopper). Öffnen Sie einfach einen meiner Blog-Beiträge, z. B. den Artikel „Den Puffermechanismus beim Kombinieren der PHP-OB-Funktion verstehen“ (ich verwende Firefox, der größte Vorteil besteht darin, dass Sie intuitiv sehen können, welche Parameter an den Server gesendet werden), und öffnen Sie die Entwickleroption um sich auf die Aufzeichnung des Vorgangs des Versendens eines Kommentars vorzubereiten. Ich schreibe einfach einen Kommentar und hinterlasse einen Kommentar. Diesmal wird die Anfrage über Entwickleroptionen protokolliert.
Wir müssen nur auf den Anforderungsheader achten.
Offensichtlich legen wir die Anforderungsheaderinformationen über die setHeader()-Methode der Http-Klasse fest und senden sie über die post()-Methode. Lassen Sie uns zunächst die Informationen im Anforderungsheader sorgfältig analysieren. Host, Inhaltstyp und Inhaltslänge werden standardmäßig über einige HTTP-Methoden festgelegt und müssen nicht hinzugefügt werden. Es muss jedoch beachtet werden, dass der Inhaltstyptyp „application/json; charset=UTF-8“ ist, was sich von „application/x-www-form-urlencoded“ der Standardeinstellung von Http unterscheidet. Der Anforderungstext liegt im JSON-Format und nicht im Array-Format vor, daher muss die ursprüngliche HTTP-Post-Methode neu geschrieben werden.
<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>
Nach der erneuten Änderung der HTTP-Klasse können wir das Schreiben des Hauptcodes dieses Artikels abschließen. Obwohl Sie theoretisch nur den Cookie-Wert festlegen müssen, wenn Sie die Header-Informationen festlegen, ist es am besten, alle Header-Informationen zu senden, um die Erfolgsquote zu erhöhen.
Bevor Sie einen Kommentar senden, werfen Sie einen Blick auf die Sendeparameter:
Wir müssen nur den Inhalt eingeben, den wir nach „Text“ senden möchten. .
Codeteil :
Zum Schluss der Hauptcode dieses Artikels:
<?<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';
Der Sendevorgang kann etwas langsam sein, bitte haben Sie etwas Geduld.
Abschließend möchte ich sagen, dass es mir nichts ausmacht, wenn Blogger diesen Blog-Beitrag als Test für das Versenden von Kommentaren verwenden, aber achten Sie bitte auf den Wortlaut.
Das Obige stellt die Verwendung des http-Protokolls zum Veröffentlichen von Blog-Beitragskommentaren vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.