ATOM APIの始まり

ATOM APIクライアントの始まりはユーザー認証から始まります。ユーザー認証が無ければ誰でも投稿できるようになってしまうので必ず付いています。
BloggerはSSL+BASIC認証を、livedoorやSo-netなどはWSSE認証が必要です。

認証部分のコードを作る
Dim endurl As String = "http://cms.blog.livedoor.com/atom" 'エンドポイントURI
Dim username As String = "username" 'ID
Dim password As String = "password" 'パスワード

'HTTP接続の作成
Dim webreq As HttpWebRequest = CType(WebRequest.Create(endurl), HttpWebRequest)
webreq.Method = "GET" 'GET指定
webreq.UserAgent = "Blogposter" 'UA設定(ソフト名)

'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 = "inininininininininin" '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接続に付ける

'HTTP接続を実行
Dim st As System.IO.Stream = webreq.GetResponse().GetResponseStream() '接続
Dim sr As New System.IO.StreamReader(st, System.Text.Encoding.GetEncoding("UTF-8")) 'デコード
Dim resp As String = sr.ReadToEnd() '応答を文字列化
これで、WSSE認証し接続部分が完成。これは、このプログラムのいろいろなところで応用できるので、関数化しておこう。
では、Blogger用は'WSSE認証の作成の部分を次のように変更
webreq.Credentials = New System.Net.NetworkCredential(username,password)

こっちのほうが短いじゃん。

今回はこれで終了。次回は応答XMLを解析しよう。
サンプルコード

posted by Repy
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.seesaa.jp/tb/10538582

forum sul grande fratello
Excerpt: ATOM APIの始まり
Weblog: forum sul grande fratello
Tracked: 2007-05-09 01:20