menu

天魔窟

勇往直前

Avatar

TrackBack?有意思~

今天花了一些时间,把 MT 网站上的 TrackBack 入门又仔细地看了一遍,配合其规范,我用 ASP 实现了简单的 TrackBack,已经在本地和 MT 的网站上测试通过。

那篇入门文章我曾贴在前面的 blog 里

就我目前的理解,所谓“TrackBack”,类似一种“通知”(ping)。举例说明:我在网上闲逛时,阅读了某人(不妨称呼其 A 君)的 Blog,并且对于他的某篇网志很感兴趣,之后,我在写自己今天的 blog 时,引用/评论了 A 君的这篇文章(全部或部分,哪怕仅仅一个链接),并且我打算让 A 君知道他的这篇文章被我所引用/评论,此时,我就需要使用 TrackBack。

TrackBack 是一种通过 HTTP 协议来进行某种方式的网络通信的方式或过程。它是和特定的 Blog 平台相关的,目前还没有统一标准。它和 RSS 一样,也是为以 Blog 为代表的新一代网络内容发布方式提供信息聚合的方便。

目前使用最多的 TrackBack 规范恐怕应该是 MT 制订的了。它是这么规定的(我的理解):

1. 每篇网志都有一个称为 TrackBack URL 的地址,这个地址依据 Blog 平台程序而不同,和它本身的 URL 地址(网址)也不同。比如,我的某篇 blog 的网址是“http://www.sinzy.net/Blog/Read.asp?ID=1&BID=1251”,而我可以规定它相应的 TrackBack URL 是“http://www.sinzy.net/Blog/TrackBack.asp?ID=1&BID=1251”。这个地址就是我们发送“通知”的目的地。

2. 发送的 TrackBack 信息,形式上就类似对特定文章的 comment~只是还包含你这个发送人的一些信息。上例中,我给 A 君发送 TrackBack ping 后,A 君的那篇文章的评论部分(或者专门的 TrackBack 部分)就会多出我发的东西。这样,A 君就事实上和我建立起了 Blog 的链接。

3. 通过 Blog 平台,向上述 TrackBack URL 发送一个 HTTP post(即 TrackBack ping),post 中包括下列元素:title:标题;url:你自己的文章/Blog 的地址;excerpt:内容摘要,相当于评论内容;blog_name:你的 Blog 的名字。

4. 接受 TrackBack ping 的 Blog 平台,需要回复一段简单的 XML 信息答复接受成功与否。

详细的规范,参见 http://www.movabletype.org/docs/mttrackback.html

所以,只要是按照 title,url,excerpt 和 blog_name 这些元素组成和发送 HTTP post 并接受和处理,即可实现基本的 TrackBack。而支持 TrackBack 的 Blog 程序,还需要对每篇网志提供唯一的 TrackBack URL(这个更简单)。我在 ASP 中,是用的 ServerXMLHTTP 对象来做的。

通过 TrackBack,Blog 之间就能连成一张大网了,可怕~有趣!:)

我的 nirvana 将很快支持 MT 规范的 TrackBack~

部分代码(试验性质):
发送 TrackBack ping:

	Dim sendString
	sendString = "title=" & Server.URLEncode(s_title) & "&url=" & Server.URLEncode(s_url) & "&excerpt=" & Server.URLEncode(s_excerpt) & "&blog_name=" & Server.URLEncode(s_blog_name)

	Dim oPing
	Set oPing = Server.CreateObject("MSXML2.ServerXMLHTTP")
	oPing.open "POST", targetUrl, False
	oPing.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
	oPing.send sendString

	Response.Write Server.HTMLEncode(oPing.responseXML.xml)

	Set oPing = Nothing

接受 TrackBack ping:

Dim s_title, s_url, s_excerpt, s_blog_name
s_title = URLDecode(Request.Form("title"))
s_url = URLDecode(Request.Form("url"))
s_excerpt = URLDecode(Request.Form("excerpt"))
s_blog_name = URLDecode(Request.Form("blog_name"))

支持啊,我在做wap的部分!

原来用xmlhttp做啊……

ASP 中,不用组件来发送 HTTP 请求的方法,似乎只有 XMLHTTP 了……

那理论上是不是和其他一些提供blog服务的网站都可以进行这种backtrack?

经测试,可以向 blogcn 的网志发送 TrackBack ping。

呵呵,xmlhttp 难道不是组件?
;)

噢,抱歉,我应当描述为“非微软出品的第三方组件”。谢谢指正:)

原理是明白的可是,代码部分,能不能详细一点写出来!!

非常好.学习了.使用xmlhttp的 POST提交.

如果是php就复杂了

评论已关闭