2015-04-03 43 views
0

我有一個代碼,從Api鏈接檢索Json值。這是反序列化並作爲對象存儲在列表中。然後使用此列表中的ID值從不同的Api鏈接檢索其他Json值。只有這些Id有可能不存在於第二個Api鏈接中。如果是這種情況,則顯示所有內容爲{"text":"no such id"},並且程序崩潰並出現404錯誤。c#HttpWebRequest 404,在對象不是全部返回空列表

這是代碼:

public RootObject objFromApi_idExistListings(string url) 
     { 

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

      try 
      { 
       WebResponse response = request.GetResponse(); 
       using (Stream responseStream = response.GetResponseStream()) 
       { 
        StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
        var jsonReader = new JsonTextReader(reader); 
        var serializer = new JsonSerializer(); 
        return serializer.Deserialize<RootObject>(jsonReader); 
       } 
      } 
      catch (WebException) 
      { 
       return null; 
      } 
     } 

當404打它返回一切從那裏空。不僅那個單一的Api請求,然後繼續,沒有整個列表然後返回null。

我該如何解決只讓對象返回null而其他所有東西都繼續的問題。或者,如果我們如何跳過404對象的整個製作過程,只要代碼可以繼續執行並反序列化所有需要解決的Api鏈接,就不必返回null。

+0

聽起來像問題在於如何調用objFromApi_idExistListings()方法並且正在處理其返回值。你能告訴我們該程序的部分是什麼樣子嗎? – 2015-04-08 18:12:55

回答

0

如果存在404響應(或者除了200以外的任何響應),您可以使用類似的方法來解救。

try 
{ 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    if (response.StatusCode != System.Net.HttpStatusCode.OK) return null; 
    //Continue by getting and parsing the response stream 
+0

它不承認'.Statuscode'。我確實有'使用System.Net;' – 2015-04-04 00:27:07

+0

'request.GetResponse();'返回一個錯誤:'不能隱式地將類型'System.Net.WebResponse'轉換爲'System.Net.HttpWebResponse'' – 2015-04-04 00:46:34

+0

第三次是魅力?我添加了明確的演員。 – 2015-04-04 00:48:22