public void Lookup(String word, SetDefinitionDelegate setDefinition) { Application.Invoke(delegate { setDefinition("Loading..."); }); String URL = String.Format(this.LookupURL, word); HttpWebRequest request = HttpWebRequest.Create(URL) as HttpWebRequest; request.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"; request.BeginGetResponse(result => { FinishLookup(result, request, setDefinition); }, null); }
private void FinishLookup(IAsyncResult result, HttpWebRequest request, SetDefinitionDelegate setDefinition) { string content; using (HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse) { Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet); using (StreamReader reader = new StreamReader(response.GetResponseStream(), responseEncoding)) { content = reader.ReadToEnd(); } } Application.Invoke(delegate { setDefinition(ExtractDefinition(content)); }); }