我使用這種方法來獲得谷歌建議查詢:中止的HttpWebRequest不會工作
public void GetSuggestFromGoogle(string query)
{
try
{
query = HttpUtility.UrlEncode(query);
string targetUrl = "http://suggestqueries.google.com/complete/search?ds=yt&output=toolbar&hl=en-US&q=" + query;
UTF8Encoding utf8 = new UTF8Encoding();
byte[] bytes = utf8.GetBytes(targetUrl);
targetUrl = targetUrl.ToString();
request = HttpWebRequest.Create(new Uri(targetUrl)) as HttpWebRequest;
request.Method = "GET";
IsDownload = true;
request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);
}
catch
{
IsDownload = false;
failCallback();
}
}
之前我調用這個方法我用:
public void CancelGoogleRequest()
{
if (IsDownload)
{
request.Abort();
IsDownload = false;
}
}
,這是完成請求方法:
private void FinishWebRequest(IAsyncResult result)
{
try
{
HttpWebResponse wResponse = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
Stream stream = wResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string xml = reader.ReadToEnd();
List<string> list = this.ParseXml(xml);
finishCallback(list);
IsDownload = false;
}
catch//(Exception erere)
{
IsDownload = false;
failCallback();
}
}
而我的問題是與HttpWebRequest
中止,即使我放棄請求調用一個新的O之前執行FinishWebRequest
方法,可以取消它嗎?
,因爲當我取消呼叫我無法使用isDownload標誌我立即打電話給另一個 – MTA 2013-03-14 16:21:20
在這種情況下WebExceptionStatusid RequestCanceled ?? – MTA 2013-03-14 16:40:08
請參閱[這裏](http://msdn.microsoft.com/en-us/library/System.Net.WebExceptionStatus.aspx):'請求被取消了,WebRequest。調用Abort方法,或發生不可分類的錯誤。這是Status'的默認值。不是很有幫助,我猜... – Clemens 2013-03-14 16:43:39