如何利用http协议发布博客园博文评论_php实例

先给大家介绍下实现原理:

给博文提交评论的实质就是通过http协议服务器发送一个post请求。在发布评论前,我们需要做什么呢?对,是必须要登录的。但登录是另一件事情,我们这里先不讨论。用户登录后,服务器给客户端设置一个cookie。http是无状态的。也就是说客户端向服务器发送请求后,服务器返回响应。一次通信完成。服务器不会记得刚才是谁向自己发送请求。所以客户端需要拿着服务器给自己设定好的cookie向服务器发送请求并告知服务器自己的身份,服务器根据cookie产生响应。

准备工作:  

  为了完成本次测试,我又注册了一个博客园小号(DeanHuangChopper),登录博客园后,打开我博客(DeanChopper),随便打开我的一篇博文,例如《结合php ob函数理解缓冲机制》一文(我用的是火狐浏览器,最大优点是向服务器发送什么参数可以很直观地看出来了),打开开发者选项,准备记录发送评论的过程。我随便写一评论,发表评论。这一次请求通过已经开发者选项记录下来。

我们只需要关注请求头就好了。

  很明显,我们通过Http类的setHeader()方法设置好请求头信息,通过post()方法发送就可以了。我们先仔细分析下请求头信息。Host和Content-type,Contetn-length会默认通过http的一些方法设置好,我们可以不添加。但必须注意的是Content-type类型是"application/json; charset=UTF-8",有别于Http默认设置的“application/x-www-form-urlencoded”。请求体是json形式,而非数组形式,因而原来的Http post方法需要重新写一下。

public function post($body) {
  $this->setLine('POST');

  // 重新设置content-type
  $this->setHeader('Content-Type:application/json; charset=UTF-8');

  // 跳过setBody方法
  // $this->setBody($body);
  $this->body[]=$body;

  // 计算content-length
  $this->setHeader('Content-length: ' . strlen($this->body[0]));

  $this->request();

  return $this->response;
 }

  在重新修改Http类后,我们便可以完成本文的主要代码的编写了。虽然按理论来说,设置头信息时只要设置cookie值就好了,但是将最好将头信息全部发送以提高成功率。

在发送评论之前,看一下发送的参数:

我们只需要将想要发送的内容填写到"body"后面就可以了。

  代码部分:

  最后是本文的主要代码:

<?php

require "http.class.php";

$http=new Http('http://www.cnblogs.com/mvc/PostComment/Add.aspx');
//设置头信息
$http->setHeader('Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3');
$http->setHeader('Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3');
$http->setHeader('Accept-Encoding:gzip, deflate');
$http->setHeader('X-Requested-With:XMLHttpRequest');
$http->setHeader('Referer:http://www.cnblogs.com/DeanChopper/p/4688667.html');
$http->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');
$http->setHeader('Pragma:no-cache');
$http->setHeader('Cache-Control:no-cache');

//设置请求体信息
$msg='{"blogApp":"DeanChopper","postId":4688667,"body":"测试内容","parentCommentId":0}';

//发送post请求
$http->post($msg);

echo 'OK';

  发送过程可能有点慢,请耐心等待。

以上介绍就是本文的全部内容,希望大家喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索博客园
, 博客园客户端
博文评论
博客园博文配图帅帅哥、项目管理实例 博客园、辅导员大赛博文实例、博文招商银行评论博客、博文招商银行评论,以便于您获取更多的相关知识。

时间: 2024-10-28 09:29:18

如何利用http协议发布博客园博文评论_php实例的相关文章

利用正则表达式抓取博客园列表数据_正则表达式

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

利用正则表达式抓取博客园列表数据

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

如果我是博客园的产品经理【下】

题记 本来打算为博客园写一篇文章就算了 但有位园友提出了几个问题很有代表性 所以打算再就此写一篇 问题如下: 1.知识的分享应该是免费无私的 2.国外有很多高质量的开源项目,为什么不强制收费(而是采用用户更主动的捐赠的功能获利) 在开始正题之前,我们先来看一下马斯洛人类需求模型: (注:马斯洛的模型被认为存在问题:层次太少,交叉现象太多) 好,我们再根据这个理论模型,来分析下面这个问题:   是什么支撑博主持续写高质量的博客 我认为主要是以下几个原因 1.为了做一个记录,自己能随时回顾自己的知识

【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结

原文 http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html 去年就知道有这个功能,不过没去深究总结过,最近有写网络博客的欲望了,于是又重新拾起这玩意儿. 具体到底是用Windows Live Writer 2012还是用Word 2013,个人觉得看个人,因为这2个软件各有优点,各有缺点. 1.首先用LiveWriter发博客显然更专业,发布后的效果也与本地最接近,但是在编辑功能上肯定大不如Word,另外一个最大缺点是它

【开源】博客园文章编辑器4.0版发布

源起 最近个人时间多起来了: 于是打算持续写一点东西: 前面写了两篇关于riot.js的东西: 被博客园的领导移出首页了: 原因之一是排版不整齐: 确实是不整齐,这我认, 然而,我自己可是博客园文章编辑器的作者啊, 而且持续写了三版了,从1.0.0写到3.0.0: 而且有很多园友也在用我的编辑器写博客: (陆续也有人在问我这个工具的下载地址,源码的问题:) 我自己咋就排班不好文章了呢? 于是翻出以前的工具代码, 回顾了一下,发现各个版本都还有很多问题没解决掉: 于是决定大规模重构一遍: 说白了就

博客园文章编辑器【客户端应用程序】V2.0.0发布,命名为51cnblogs

2015-6-16傍晚:说明 替换了一个关键类库,减小了文件的体积 改变了窗口的默认大小 改变了右侧菜单的宽度 下载地址:http://pan.baidu.com/s/1sjqjLVn 注意1: 当你新写完一篇博客之后,如果你点两次提交,博客园后台将创建两篇相同的博客 建议你点一次提交,然后再点一次获取,这样就可以修改这篇博客了 注意2: 这将是这个工具以这种形态的最后一次更新, 下次更新就会换一种形式了! 2015-6-14凌晨:说明 又修复了一些BUG 重新编译了代码 做了提升性能的工作 做

博客园文章编辑器5.0版本发布(markdown版)

注意:使用本软件前,需先在博客园后台设置默认编辑器为markdown 开篇 废话少说,先上界面图片: 10月25日,我发布了博客园文章编辑器的4.0版本,得到了很多朋友的支持, (后来我自己发现了一些问题,于是偷偷发了博客园文章编辑器的4.0.1版本,也没通知大家,不过好在有自动升级功能) 当时有很多朋友问我,这个工具支持不支持markdown, 我觉得写markdown的人还是挺多的, 调查了博客园确实支持markdown编辑器, 而且我开发了markdown的编辑器,对于那些使用HTML富文

微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章

这几天接连发布了<快速开发微信公众平台框架---简介>和<体验微信公众平台快速开发框架>几篇关于微信平台的文章,不过反响一般,可能需求不是很多吧.闲来无事,还是继续改造一下这个框架. 今天更新了框架代码,听取了 @RMay 的建议,加入了一个信息中间件,用来处理xelement,避免了重复解析,所以所有接口都更改了下.此次更新如下: 1.增加信息中间件MiddleMessage 2.更改了接口参数类型,把原来的XElement都改成了MiddleMessage 3.删除了Demo项

如果我是博客园的产品经理【上】

题记 这是一个系列文章的第一篇 我打算写一个<如果我是XXX的产品经理>系列, 因为我是博客园的老用户了,这个系列又是写在博客园上的 所以先拿博客园开刀, 后面估计还会写QQ音乐,有道云笔记,github,foxmail等这些活在我生命中的产品.   为什么写这个系列 <捕蛇者说>最后一句写到:"故为之说,以俟夫观人风者得焉." 我这个系列的意图,也是希望能有赏识我的人,用业余时间一起做产品. (趁机推销自己一句,我是一家上市公司研发部的部门经理,整个部门有三十