人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP初心者です。
はてなブックマークへの投稿をAPIを利用してPHPで実装しようと思っているのですが、
うまくいきません。

認証は通っているのですが、400 Bad Requestが返ってきてしまいます。
XMLの投げ方が悪いのでしょうか?
文法が間違っているのでしょうか?

****************************************************
<?php
require_once 'HTTP/Client.php';

$url="http://b.hatena.ne.jp/atom/post";

$http = new HTTP_Client();

$http->setDefaultHeader('X-WSSE','XXXX');

$xml = "<entry xmlns=\"http://purl.org/atom/ns#\">\n"
."<title>dummy</title>\n"
."<link rel=\"related\" type=\"text/html\" href=\"http://www.example.com/\" />\n"
."<summary type=\"text/plain\">サンプルコメントです</summary>\n"
."</entry>\n";

$http->post($url, $xml);

$response = $http->currentResponse();

print $response['code']."\n";
print $response['headers']."\n";
print $response['body']."\n";

?>

●質問者: sensibility
●カテゴリ:インターネット ウェブ制作
✍キーワード:API BODY Client HTTP PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● goodvn
●60ポイント

WSSE を生成せず固定で書かれているように見受けられますが,Nonce,Created,パスワードから動的に生成するものですので,このあたりのコードを見直してみてください

◎質問者からの返答

回答ありがとうございます。

下記内容を付加して実行しましたが同じ結果でした。(400 Bad Request)

本文にもありますが、認証自体は成功していると思います。

*****************************************************

$user = 'userid';

$pass = 'password';

$nonce = sha1(md5(time().rand()), TRUE);

$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);

$http->setDefaultHeader('X-WSSE',$wsse_header);

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ