2012-01-25 2 views
0

Я использую wikipedia api для извлечения данных из wiki pedia, но я получаю ошибку здесь, когда я отправляю свой код и свою ошибку. Пожалуйста, помогите мне.ошибка в использовании wikipedia api

HttpWebRequest myRequest = 
    (HttpWebRequest)WebRequest.Create("http://en.wikipedia.org/w/api.php?action=opensearch&format=xml&search=hello"); 
System.Net.ServicePointManager.Expect100Continue = false; 

using (HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse()) 
{ 
    string ResponseText; 
    using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
    { 
     ResponseText = reader.ReadToEnd(); 
    } 

    lblresult.Text = ResponseText; 
} 

Вот моя ошибка:

System.Net.WebException was unhandled by user code 
    Message=The remote server returned an error: (403) Forbidden. 
    Source=System 
    StackTrace: 
     at System.Net.HttpWebRequest.GetResponse() 
     at _Default.btnsearch_Click(Object sender, EventArgs e) in c:\Users\Imran Ali\Desktop\Wikipedia\Default.aspx.cs:line 33 
     at System.Web.UI.WebControls.Button.OnClick(EventArgs e) 
     at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 
     at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
     at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
     at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: 
+0

Сервер также возвращает любой * текст * на странице с ошибкой? Это может сказать вам, почему вы получаете 403. Я не получаю 403, делающий тот же запрос API, поэтому, возможно, они заблокировали ваш IP-адрес. –

ответ

2

Чтобы получить доступ к Википедии (используя API или нет), вы должны установить User-Agent в запросе. Это из-за Wikimedia's User-Agent policy.

Что нужно задать для заголовка User-Agent? Цитирование страницы политики, указанной выше:

Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

Как установить заголовок? Используйте объект the UserAgent property на объекте запроса.

В качестве побочного примечания, для простых запросов, таких как, проще использовать методы WebClient, например, DownloadString().

 Смежные вопросы

  • Нет связанных вопросов^_^