はてなブックマークAPIを使って、はてブを投稿する機能をC#で書いていますが、動きません。書いたのは下のソースです。

http://d.hatena.ne.jp/tomity/20080213/1202890384

原因はなんでしょうか。どうなおせば正しく動くでしょうか。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/02/15 20:07:33
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:oldriver No.1

回答回数22ベストアンサー獲得回数1

ポイント60pt

一般的に得られる情報なので、ご検討済みかもしれませんが。

<1. プロキシ説>

status code 417 についてググってみると、プロキシサーバが悪さをしている可能性が高いという記述を多く見受けます。もしプロキシを使っていたらプロキシ無しの環境で試すか、他のプロキシに変えてみたら状況は変化しないでしょうか。

<2. その他>

リクエストヘッダとレスポンス(ヘッダとボディ)がわかれば、推測しやすそうな気もしますね。

というのも、417はリクエストのExpectヘッダフィールドに対するエラーだからです。手っ取り早く、Fiddlerでも使って調べてみてはいかがでしょうか。

参考:417 Expectation Failed

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1...

id:tomity

Expectヘッダを調べたところ、"100-continue"という値が設定されていました。これは調べたところステータスコード100 continueを利用できることをサーバーに求めるヘッダでした。はてなのサーバーがステータスコード100を利用できないため起こっていたエラーのようです。

ですので、以下のコードを足すことで、動くようになりました。

ServicePoint currentServicePoint = webreq.ServicePoint;

if (currentServicePoint == null) {

WebProxy proxy = WebProxy.GetDefaultProxy();

currentServicePoint = ServicePointManager.FindServicePoint(postURI, proxy);

}

currentServicePoint.Expect100Continue = false;

調べていただきありがとうございました。

2008/02/15 20:06:13

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • androidからのはてなAPIの認証 **失敗する はてなブックマークAPIを使って新しいブックマークをポストしようとするけど、失敗する レスポンス <?xml version="1.0" encoding="iso-8859-1"
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません