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を解析しよう。
サンプルコード