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


Posted in PHP onAugust 03, 2015

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

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

准备工作:

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

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

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

很明显,我们通过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值就好了,但是将最好将头信息全部发送以提高成功率。

在发送评论之前,看一下发送的参数:如何利用http协议发布博客园博文评论

我们只需要将想要发送的内容填写到"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';

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

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

PHP 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php 获取select下拉列表框的值
May 08 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php防注入及开发安全详细解析
Aug 09 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
基于PHP生成简单的验证码
Jun 01 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 #PHP
如何使用php实现评委评分器
Jul 31 #PHP
php给图片加文字水印
Jul 31 #PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 #PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 #PHP
php使用Imagick生成图片的方法
Jul 31 #PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 #PHP
You might like
用户的详细注册和判断
2006/10/09 PHP
PHP开发框架总结收藏
2008/04/24 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
Javascript原生ajax请求代码实例
2020/02/20 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python与R语言的简要对比
2017/11/14 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
方正Java笔试题
2014/07/03 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
元宵晚会主持词
2014/03/25 职场文书
学生会主席演讲稿
2014/04/25 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
安全生产工作汇报
2014/10/28 职场文书
社区活动总结范文
2015/05/07 职场文书
小学新课改心得体会
2016/01/22 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
python本地文件服务器实例教程
2021/05/02 Python