中文版 | English

网站首页 | 个人作品 | 博客 | 给我留言 | 经典分享 | 友情链接 | 黑白人生


TrackBack技术

'#函数名:Trackback
'#
用:向指定的URL发送Trackback Ping,并根据服务器端返回的信息,提示用户处理情况。
'#
数:
'#RemoteURL =
目标URL,也即所引用的blog所提供的引用地址
'#MyBlogURL =
我的BlogURL
'#MyBlogName =
我的blog站点名称
'#MyBlogTitle =
当前这篇blog的标题
'#MyBlogExcerpt =
当前这篇blog的摘要
'#
返回结果:字符串,以“|”分隔,第一部分为数字,0表示成功,1表示有错;第二部分是具体信息。

Function Trackback(RemoteURL,MyBlogURL,MyBlogName,MyBlogTitle,MyBlogExcerpt)
Dim objXMLHttp,objXML,intStat,strMessage,strPostInfo

'对参数进行必要的处理,比如URLEncode之类
MyBlogURL = Server.URLEncode(MyBlogURL)
MyBlogName = Server.URLEncode(MyBlogName)
MyBlogTitle = Server.URLEncode(MyBlogTitle)
MyBlogExcerpt = Server.URLEncode(MyBlogExcerpt)

'构造要发送的请求内容
strPostInfo = "title=" & MyBlogTitle
strPostInfo = strPostInfo & "&url=" & MyBlogURL
strPostInfo = strPostInfo & "&excerpt=" & MyBlogExcerpt
strPostInfo = strPostInfo & "&blog_name=" & MyBlogName

'创建对象
Set objXMLHttp = Server.Create
Set objXML = Server.Create

'以post方式打开XMLHTTP对象
objXMLHttp.Open "POST", RemoteURL, false

'发送请求内容,判断发送情况,并进行处理
On Error Resume Next
objXMLHttp.Send strPostInfo

If Err.Number <> 0 Then
Trackback = "1|TrackBack错误:无法连接服务器"
Else
If (objXMLHttp.readyState <> 4) Or (objXMLHttp.Status <> 200) Then
objXMLHttp.Abort
Trackback = "1|Trackback超时"
Else
objXML.async = false
objXML.load(objXMLHttp.responseXML)
If objXML.parseError.errorCode <> 0 Then
Trackback = "1|TrackBack响应解析错误"
Else
If objXML.getElementsByTagName("error")(0).Text="0" Then
Trackback = "0|Trackback成功"
Else
Trackback = "1|Trackback错误:"&objXML.getElementsByTagName("message")(0).Text
End If
End If
End If
End If

'释放对象
Set objXMLHTTP = Nothing
Set objDom = Nothing
End Function

'#过程名:DealRequest
'#
用:接收和处理客户端发来的Trackback Ping
'#
数:无

Sub DealRequest()
Dim blog_id,tbTitle,tbName,tbURL,tbExcerpt,stat
'从所请求的URL中提取所引用的blogID,以便从数据库中检索对应的blog
'这个参数根据你所写的blog程序提供的Trackback地址形式而定
'这里我们假设这个参数为“id”
blog_id = Request.QueryString("id")

'读取出客户端传来的请求中的每个部分
'注意,这里没有对以Get方式提交的请求作出处理
'因为2003年以后根据技术规范已经不再接受Get方式的请求
'如果希望增强兼容性,可以加上对Get方式的请求的处理
tbTitle = Request.Form("title")
tbName = Request.Form("blog_name")
tbURL = Request.Form("url")
tbExcerpt = Request.Form("excerpt")

'检索数据库中id为blog_id的blog数据和url为tbURL的Trackback记录
'如果blog不存在,或者Trackback记录已存在,向客户端返回相应的出错说明
'我们这里调用一个进程tbResponseXML来完成这项工作
'调用时,以参数stat=0[1,2]分别表示成功、日志不存在和记录已存在

tbResponse

'如果是成功,还应当做好更新TrackBack记录和相关blog引用数的工作
End Sub

#过程名:tbResponseXML
'#
用:接收和处理客户端发来的Trackback Ping
'#
数:
'#stat
:错误代码,0=成功;1=日志不存在;2=Trackback记录已存在
'#strCodePage
:要返回的XML的编码
Sub tbResponse
Response.descriptionType = "text/xml" & vbNewLine
Response.Write "" & vbNewLine
Response.Write " " & vbNewLine
Response.Write " " & stat & "" & vbNewLine
If stat = 1 Then
Response.Write " The blog you're trackbacking isn't exist!" & vbNewLine
ElseIf stat = 2 Then
Response.Write " You can not Trackback a blog twice from the same URL." & vbNewLine
End If
Response.Write "
"
End Sub

上一篇: 漂移技术入门
下一篇: 剑侠梦[转]