优化DOTTEXT之三:完善Trackback

本文探讨了TrackBack功能在中国的应用现状及其技术障碍。许多大型博客网站并未遵循TrackBack标准,导致该功能无法顺利运行。文章详细分析了DOTTEXT在遵守标准方面的情况,并提出了解决发送TrackBack时出现的问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TRACKBACK是BLOG的一项重要功能,最近在到一些文章说TRACKBACK快要死了。我觉得TRACKBACK的最大障碍是标准问题。很多BLOG SITE并没有遵守TRACKBACK的标准,(标准的内容http://www.movabletype.org/docs/mttrackback.html

在中国连http://www.blogchinese.comhttp://www.bokee.com/这样的大型网站也没有遵守此标准,TRACKBACK应用不畅也是理所当然的了。

幸运的是DOTTEXT遵守了这一标准,相关类是:

Dottext.Framework.Tracking.TrackBackNotificationProxy:发送TRACKBACK

Dottext.Framework.Tracking.TrackBackHandler:接收PING过来的TRACKBAC

CNBlogsDottext10Beta2版本中,TRACKBACK功能被屏蔽掉了,原因可能是因为很多人安装成功后,在提交包含引用链接的POSTS时,出现错误:

 将截断字符串或二进制数据

其实这是因为发送TRACKBACK的关键方法:SendPing(string trackBackItem, string parameters)里,发送字节流时按照ASCII码的长度来发送,当PARAMETERS中包含中文时,就会出错,解决方法是转换成UTF-8发送,下面是我修改过后的代码:

  private void SendPing(string trackBackItem, string parameters)
  {

   HttpWebRequest request = BlogRequest.CreateRequest(trackBackItem);
   request.Method = "POST";

   request.ContentType = "application/x-www-form-urlencoded";
   request.KeepAlive = false;

   byte [] buff = Encoding.GetEncoding("UTF-8").GetBytes(parameters);     

   request.ContentLength = buff.Length;

   Stream reqStream = null;
   try
   {
    reqStream = request.GetRequestStream();

    reqStream.Write(buff, 0, buff.Length);
   }
   catch(Exception e)
   {
    Logger.LogManager.CreateExceptionLog(e,"SendPing Exception");
   }
   finally
   {
    reqStream.Close();
   }


下一节我将分析一下DOTTEXT在TRACKBACK时的流程,并对改善方法提供一些建议

转载于:https://www.cnblogs.com/jasononline/archive/2007/06/01/767222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值