スポンサード リンク

2008年09月03日

Visula Basic 2008からAtom API でLivedoorに投稿してみるみる

VB2008(Visual Basic 2008)からLivedoorに投稿するのが結構面倒です
xml_rpc じゃなくてAtom APIとかの仕様なので、WSSE認証の作成というのをしなければならないようです。
いろいろ調べてみていろんな方のサイトやPHPなんかのプログラムも参考にしてAtomで投稿できるようになりました

LiveDoorPostはFunctionでリターンをするのですが、これはなんにも返しません??
投稿できればいいや。。。


    Public Function AtomXML(ByVal Title As String, ByVal Body As String)
        Dim XMLString As String

        XMLString = "<?xml version=""1.0"" encoding=""UTF-8""?>"
        XMLString &= "<entry xmlns=""http://purl.org/atom/ns#"" xmlns:dc=""http://purl.org/dc/elements/1.1/"">"
        XMLString &= "<title>" & Title & "</title>"
        'XMLString &= "<dc:subject>test</dc:subject>"
        XMLString &= "<content type=""text/html"" mode=""escaped"">"
        XMLString &= "<![CDATA[" & Body & "]]>"
        XMLString &= "</content>"
        XMLString &= "</entry>"

        Return XMLString
 

    Function LiveDoorPost(ByVal username As String, ByVal password As String, ByVal BlogID As String, ByVal XMLString As String) As String
        Dim postDataBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(XMLString)
        Dim URL As String = "http://cms.blog.livedoor.com/atom/blog_id=" & BlogID
        'HttpWebRequestの作成
        Dim webreq As System.Net.HttpWebRequest = _
            CType(System.Net.WebRequest.Create(URL), System.Net.HttpWebRequest)
        webreq.Method = "POST" 'GET指定
        webreq.UserAgent = "Blogposter" 'UA設定(ソフト名)
        webreq.ContentType = "text/xml"
        webreq.ContentLength = postDataBytes.Length

        'WSSE認証の作成
        Dim shasp As New System.Security.Cryptography.SHA1CryptoServiceProvider() 'SHA処理用
        Dim nowt As DateTime = DateTime.Now '現在の時間取得
        Dim tim As String = nowt.ToString("yyyy-MM-ddTHH:mm:ssZ") '文字列にする(2005-12-11T22:39:56Z)の形式
        Dim non As String = "tekitounisitemiruyon" 'Nonce(WSSEに必須の20文字の文字列)
        Dim b64 As String = System.Convert.ToBase64String(shasp.ComputeHash(System.Text.Encoding.UTF8.GetBytes(non & tim & password))) 'NonceTimePasswordをSHA→Base64エンコード
        Dim ninsyou As String = "UsernameToken Username=""" & username & """, PasswordDigest=""" & b64 & """, Nonce=""" & System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(non)) & """, Created=""" & tim & """" '認証文の完成
        webreq.Headers.Add("X-WSSE", ninsyou) 'HTTP接続に付ける


        Dim reqStream As System.IO.Stream = webreq.GetRequestStream()

        reqStream.Write(postDataBytes, 0, postDataBytes.Length)
        reqStream.Close()

        'レスポンスの取得

        Dim response As System.Net.HttpWebResponse = Nothing
        Dim doc As New System.Xml.XmlDocument()
        'レスポンスの取得
        Try
            response = CType(webreq.GetResponse(), System.Net.HttpWebResponse)
            Dim strm As System.IO.Stream = response.GetResponseStream()

            'XmlDocumant に読み込む
            doc.Load(strm)
        Catch ex As Exception

            Return "エラー:" & ex.Message

        Finally
            If Not (response Is Nothing) Then
                response.Close()
            End If
        End Try

        '結果を得る
        'doc.Value
        Dim FileName As String = Application.StartupPath() & "\Tools\Livedoorxml.txt"
        doc.Save(FileName)

        Dim paramsNode As System.Xml.XmlNode = doc.SelectSingleNode("/methodResponse/params/param/value")

        'Try
        'Return paramsNode.SelectSingleNode("int").InnerText
        'Catch ex As Exception
        Return ""
        'End Try

    End Function

こんな感じでこの関数は使います
    LiveDoorPost(username, password,BlogID ,AtomXML(Title,Body))

posted by kiyo at 20:01| Comment(0) | TrackBack(5) | xml | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/105964818

この記事へのトラックバック

Livedoor Blogで Windows Live Writer が 使えない理由
Excerpt: Windows Live Writer Beta 14.0.5025.904 がリリースされました。しかし、Livedoorで利用できないので少し調べてみました。どうやら、 atom 0.3 を使って...
Weblog: 黒翼猫のコンピュータ日記 2nd Edition
Tracked: 2008-09-26 10:16

びひゃあぁぁぁぁぁい!
Excerpt: こないだ女にロー夕ーと電マ持って来させてマムコを集中攻撃したよ(`・ω・´)スゲエ声でアンアン言いまくって、もの凄い勢いで9マソくれたよwwwwww寝て稼ぐのもいいけど、たまには攻めるのもアリだよなー...
Weblog: コンプ
Tracked: 2008-10-04 18:04

ドッピューーーーン♪
Excerpt: 口コミ板で見たサイトで会った女の子・・・カワイイ薄ピンクの地区Bなうえにアソコも濡れ濡れww 俺のティンコ血管破裂しそうなくらいオッキしたわwバイ部でクリとリス刺激したらドッピューーーって大噴射してた...
Weblog: ひゃん
Tracked: 2008-10-11 19:35

すぐオッキwwww
Excerpt: サイト見て興味あったから、工口ゲ買いに行くついでに見せてきた(`・ω・´)結局盛り上がっておしゃぶりしてもらったんだけど7マソ貰えてビビったwww工口ゲ代だけ貰うつもりだったのにプラスになりすぎて笑っ...
Weblog: こけし
Tracked: 2008-10-18 12:34

試写室にてwww
Excerpt: お互い家でするのは嫌だし、ホテルってベタだし・・・試写室でヤってきたwwスリルあるし密室感あるし普通よりスンゲー興奮したwwwwww女もスゲエ濡れ濡れで何回もイってたしw おかげで10マソも貰えたわぁ...
Weblog: 暴走
Tracked: 2008-10-24 19:26