追記
今回のケースでは、対象のサイトは User-Agent がない場合は応答を拒否(503 エラーを返す)する設計・実装のようですね。
https://goo.gl/bvQz1y
User-Agent に有意な値を入れてください。
これ臭い! ということで
client.Headers["User-Agent"] = "myUserAgentString";
https://goo.gl/IttA2W
を追加したら503エラーは無くなったけど中身がnullのまま。
むーん
原文
んなわけではまっているのである。
まず、どうも被ブックマークの新着順は見られないようだと言うことなので
http://b.hatena.ne.jp/search/text?safe=off&q=elve&mode=rss&threshold=1&sort=eid
を取得してみようと思ったのだが・・・
using System; using System.Xml; using System.ServiceModel.Syndication; using System.Web; using System.Net; using System.IO; namespace WindowsFormsApp1 { class Class3 { public string url_name {set;get;} public string url { get; set; } public Class3() { url_name = Properties.Settings.Default.url_name; url = "http://b.hatena.ne.jp/search/text?safe=off&q="+ url_name + "&mode=rss&threshold=1"; var tmp = new HttpUtility(); url = System.Web.HttpUtility.UrlPathEncode(url); } public string test() { WebClient web = new WebClient(); Stream stream = web.OpenRead(url);//ここで例外発生 // //略 // }
じゃーjsonでとってみるかーってんで
http://b.hatena.ne.jp/entrylist/json?sort=eid&url=elve
に変えてみても・・・
public string test2() { url = "http://b.hatena.ne.jp/entrylist/json?sort=eid&url=" + url_name; url = System.Web.HttpUtility.UrlPathEncode(url); WebClient web = new WebClient(); Stream stream = web.OpenRead(url);//ここで例外発生 // //略 // } } }
明日はなんかうまい方法が見つかるといいなぁ