2013-06-02 3 views
0

У меня проблема ... Я бы создал приложение, которое очистило результат поиска Google .. но когда я пытаюсь использовать downloadstringasync, отладка возвращает мне ошибку «Невозможно назначить 'void' для локальной переменной ... "Ошибка DownloadStrinAsync во время разбора в Windows Phone

Вы говорите, как я могу это решить?

Это код

 public class SearchResult 
    { 
     public string url; 
     public string title; 
     public string content; 
     public FindingEngine engine; 

     public enum FindingEngine { google, bing, google_and_bing }; 

     public SearchResult(string url, string title, string content, FindingEngine engine) 
     { 
      this.url = url; 
      this.title = title; 
      this.content = content; 
      this.engine = engine; 
     } 
    } 

public static List<SearchResult> GoogleSearch(string search_expression, 
    Dictionary<string, object> stats_dict) 
{ 
    var url_template = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&safe=active&q={0}&start={1}"; 
    Uri search_url; 
    var results_list = new List<SearchResult>(); 
    int[] offsets = { 0, 8, 16, 24, 32, 40, 48 }; 
    foreach (var offset in offsets) 
    { 

    var searchUrl = new Uri(string.Format(url_template, search_expression, offset)); 
    var page = new WebClient().DownloadStringAsync(searchUrl); 
    var o = (JObject)JsonConvert.DeserializeObject(page); 

    var results_query = 
     from result in o["responseData"]["results"].Children() 
     select new SearchResult(
      url: result.Value<string>("url").ToString(), 
      title: result.Value<string>("title").ToString(), 
      content: result.Value<string>("content").ToString(), 
      engine: SearchResult.FindingEngine.google 
     ); 

    foreach (var result in results_query) 
     results_list.Add(result); 
    } 

    return results_list; 
} 

Спасибо!

ответ

1

DownloadStringAsync ничего не возвращает, т. Е. void, поэтому вы не можете просто назначить ему переменную.

Вам необходимо добавить обработчик события в DownloadStringCompleted, который будет запущен, когда DownloadStringAsync завершает работу.

var client = new WebClient(); 
client.DownloadStringCompleted += client_DownloadStringCompleted; 
client.DownloadStringAsync(searchUrl); 

static void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { 
    // e.Result will contain the returned JSON. Move the code that parse the result to here. 
} 
Смежные вопросы