WSSEではてなダイアリーにポスト
PHPでどう書くかという情報が乏しいようなので書いておく。
error_reporting(E_ALL); require_once 'HTTP/Request.php'; function wsse_blogPost($user, $pass) { $url = 'http://d.hatena.ne.jp/' . $user .'/atom'; $blogurl = 'http://d.hatena.ne.jp/' . $user . '/atom/blog'; $rawdata = <<<EOF <entry xmlns="http://purl.org/atom/ns#"> <title>wsse_test</title> <content type="text/plain"> - test - テスト </content> </entry> EOF; $nonce = pack('H*', sha1(md5(time().rand().posix_getpid()))); $created = date('Y-m-d\TH:i:s\Z'); $digest = base64_encode(sha1($nonce . $created . $pass, true)); $wsse_header = sprintf('UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"', $user, $digest, base64_encode($nonce), $created); $request = new HTTP_Request($url); $request->addHeader('X-WSSE', $wsse_header); $request->addHeader('ContentType', 'application/x.atom+xml'); $request->setMethod(HTTP_REQUEST_METHOD_POST); $request->setURL($blogurl); $request->addRawPostData($rawdata); if (PEAR::isError($request->sendRequest())) { die('request failed'); } }