作者:过客
|     我写了一个BLOG 的TrackBack类,但是有问题 Imports System
Imports System.IO
Imports System.Web
Imports System.Net
Imports System.Data
Imports System.Text
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Public Class Trackback
Inherits System.Web.UI.Page
Private OkMsg As String = "<?xml version=""1.0"" encoding=""utf-8""?>" & Microsoft.VisualBasic.Chr(10) & "" + "<response>" & Microsoft.VisualBasic.Chr(10) & "" + "<error>0</error>" & Microsoft.VisualBasic.Chr(10) & "" + "</response>" & Microsoft.VisualBasic.Chr(10) & ""
Private PreErrorMsg As String = "<?xml version=""1.0"" encoding=""utf-8""?>" & Microsoft.VisualBasic.Chr(10) & "" + "<response>" & Microsoft.VisualBasic.Chr(10) & "" + "<error>1</error>" & Microsoft.VisualBasic.Chr(10) & "" + "<message>"
Private PostErrorMsg As String = "</message>" & Microsoft.VisualBasic.Chr(10) & "" + "</response>" & Microsoft.VisualBasic.Chr(10) & ""
Public Sub page_load(ByVal s As Object, ByVal e As EventArgs)
Dim parentId As Integer = 0
Try
parentId = Request.QueryString("id")
Catch ex As Exception
parentId = -1
End Try
If parentId >= 0 Then
Response.Write(ProcessPing(Page.Request, parentId))
Page.Response.ContentType = "text/xml"
End If
End Sub
Private Function RespondMsg(ByVal msg As String) As String
If msg Is Nothing Then
Return OkMsg
Else
Return PreErrorMsg + msg + PostErrorMsg
End If
End Function
Public Function ProcessPing(ByVal request As HttpRequest, ByVal parentId As Integer) As String
If request Is Nothing OrElse parentId < 0 Then
Return RespondMsg("Invalid blog item referred.")
End If
If Not request.HttpMethod.Equals("POST") Then
Return RespondMsg("Request MUST submitted in POST method.")
End If
Dim title As String = request.Form("title")
Dim url As String = request.Form("url")
Dim excerpt As String = request.Form("excerpt")
Dim blog_name As String = request.Form("blog_name")
Dim ip As String = request.UserHostAddress
If url Is Nothing OrElse url.Length = 0 Then
Return RespondMsg("The ""url"" not specified in the POST request.")
End If
Dim strconn As String = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("blogdatabase/$@--88jkblog##llnh.mdb")
Dim conn As New OleDbConnection(strconn)
Dim cmd As New OleDbCommand("select count(*) as total from BlogArticle", conn)
conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader
If dr("total") <= 0 Then
Return RespondMsg("Invalid blog item referred.")
End If
dr.Close()
conn.Close()
Dim sql As String = "insert into trackback(articleid,title,url,excerpt,blog_name,date,ip) values('" & parentId & "','" & title & "','" & url & "','" & excerpt & "','" & blog_name & "','" & Now() & "','" & request.UserHostAddress & "')"
cmd = New OleDbCommand(sql, conn)
conn.Open()
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Return RespondMsg("发生错误")
End Try
conn.Close()
Return RespondMsg(Nothing)
End Function
Public Sub SendPing(ByVal targetUrl As String, ByVal url As String, ByVal blog_name As String, ByVal title As String, ByVal excerpt As String)
Dim post As HttpWebRequest = CType(WebRequest.Create(targetUrl), HttpWebRequest)
post.Method = "POST"
post.ContentType = "application/x-www-form-urlencoded; charset=utf-8"
Dim postData As String = ""
If Not (url Is Nothing) Then
postData += "url=" + HttpUtility.UrlEncode(url)
End If
If Not (blog_name Is Nothing) Then
postData += "&blog_name=" + HttpUtility.UrlEncode(blog_name)
End If
If Not (title Is Nothing) Then
postData += "&title=" + HttpUtility.UrlEncode(title)
End If
If Not (excerpt Is Nothing) Then
postData += "&excerpt=" + HttpUtility.UrlEncode(excerpt)
End If
Dim buff As Byte() = Encoding.UTF8.GetBytes(postData)
post.ContentLength = buff.Length
Dim stream As Stream = post.GetRequestStream
stream.Write(buff, 0, buff.Length)
stream.Close()
post.BeginGetResponse(Nothing, Nothing)
End Sub
End Class
|