Delphi から、はてなの AtomAPI を使う

| | コメント(0) | トラックバック(0)

いくつかハマったのでアウトプット。

var
  s: TStringStream;
  wsse: string;
  nonce: string;
  created: string;
  passwordDigest: string;
const
  password = '123456789';
  user = 'username';
begin
  s := TStringStream.Create('');
  try
    {WSSE認証用の文字列を作る}
    //created
    created := DateTimeToIso8601(Now);
    //nonce
    nonce := HashSHA1(created + IntToHex(Random($FFFFFFFF), 8));
    //passwordDigest
    passwordDigest := HashSHA1(nonce + created + password);
    //wsse
    wsse := Format('X-WSSE: UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',
                   [user, EncodeBase64(passwordDigest), EncodeBase64(nonce), created]);
    {リクエストする}
    HTTP.Request.ExtraHeaders.Add(wsse);
    HTTP.Get('http://b.hatena.ne.jp/atom', s);
    //Memo1.Lines.Text := s.DataString; //煮るなり焼くなり
  finally
    s.Free;
  end;
end;

この例では、HTTP は Indy。

ハマったのは、二点。

一つは、ハッシュを16進数表記にしてから使ってしまった。こんな感じ。3C748979...

実際には、Chr($3C) + Chr($74) + Chr(89) + Chr($79)... に相当する文字列を渡す。

二つ目は、ヘッダに記述する nonce を EncodeBase64 していなかった。(参考: http://d.hatena.ne.jp/molih/20050512/p1)

トラックバック(0)

このブログ記事を参照しているブログ一覧: Delphi から、はてなの AtomAPI を使う

このブログ記事に対するトラックバックURL: http://www.towofu.net/cgi-bin/mt/mt-tb.cgi/144

コメントする

このブログ記事について

このページは、towofuが2005年7月25日 21:11に書いたブログ記事です。

ひとつ前のブログ記事は「Google Mapsに地図とサテライトの同時表示モードがキタ」です。

次のブログ記事は「はてなブックマークを使い始めてみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。