2016-03-12 17 views
0

我使用下面的C#/ ASP.net代碼從api獲取天氣數據。如果我將api鏈接複製/粘貼到瀏覽器上,則返回所有我想要的數據。 但是在我的C#代碼中,我得到錯誤「{」無法連接到遠程服務器「}」在asp.net中讀取api結果

任何人都知道什麼是錯的?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Runtime.Serialization.Json; 
using System.IO; 
using System.Text; 
using System.Runtime.Serialization; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Xml; 

namespace WebApplication2 
{ 
    public partial class GetData : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     [System.Web.Services.WebMethod] 
     public static void getData() 
     { 


      var url = "http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=e67fab67a2bc61c221e8a6165965c107"; 
      var client = new HttpClient(); 

      client.DefaultRequestHeaders.Accept.Add(
       new MediaTypeWithQualityHeaderValue("application/json")); 

      var response = client.GetAsync(url).Result; 

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      getData(); 
     } 
    } 

回答

0

我注意到的問題是,我的互聯網連接使用的內部DNS服務器,其設置不允許由於安全限制這樣的電話。在我們的辦公室之外,代碼工作得很好。

1

我不知道爲什麼你無法連接遠程服務器可能會關閉你的防火牆解決你的問題。嘗試下面的代碼。 https://stackoverflow.com/a/16642279/2745294 https://stackoverflow.com/a/5566981/2745294

string urlAddress = "http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=e67fab67a2bc61c221e8a6165965c107"; 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    Stream receiveStream = response.GetResponseStream(); 
    StreamReader readStream = null; 

    if (response.CharacterSet == null) 
    { 
    readStream = new StreamReader(receiveStream); 
    } 
    else 
    { 
    readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); 
    } 

    string data = readStream.ReadToEnd(); 

    response.Close(); 
    readStream.Close(); 
}