rksoftware

Visual Studio とか C# とかが好きです

Web API で情報を取得しようとして 403 Forbidden

勉強会情報収集アプリを作ろうとしています。
今のことろマルチプラットフォーム展開を考えていて、.NET で捨てコードで情報収集を試しています。

■ 勉強会告知サービス

勉強会告知をサポートするサービスはそれぞれ API が用意されているので、これを利用させてもらって収集しようとしています。

■ 403 Forbidden

しかし、.NET のプログラムから取得しようとすると、403 が返っています。
同じクエリをブラウザから投げると正しく帰ってくるのに、です。
※一度ブラウザから投げたクエリはその後、プログラムからも成功するようになります。

■ 対策概要

次のサイトを参考に UserAgent を設定するといけました。
※PHP での例です。
http://blog.snowcait.info/2016/12/18/php-file_get_contents-403-forbidden/

■ .NET での実装

var http = new HttpClient();
http.DefaultRequestHeaders.Add("User-Agent", "iOS");
string json = await http.GetStringAsync("https://connpass.com/api/v1/event/?count=100&order=1&keyword=埼玉");

参考

これで、情報を取得することができました。