2016-07-13 39 views
-1

Green Button是美國政府的能源項目。我試圖編寫代碼來獲取他們的數據,並且他們已經創建了一個SandBox。就在最近我得到的數據和一切都很好,直到兩天前,突然之間我不再從Greenbutton獲得數據,完全沒有了藍色!在沙盒中,我使用Access Token Box中的datacustodian_access_token:承載2a85f4bd-30db-4b7d-8f41-b046b0566cb3。然後我啓動了GET/espi/1_1/resource/MeterReading。它曾經工作給我響應代碼200和原子xml。現在,它給了我禁止響應代碼403和我回去:GreenButton不再可訪問?

<oauth> 
    <error_description>No Authorization Found</error_description> 
    <error>access_denied</error> 
</oauth> 

我有我所用,以獲得數據的一些C#代碼,它也不再是獲取數據,而是得到一個錯誤。該代碼如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Threading.Tasks; 

namespace GreenButton 
{ 
    public partial class Test2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      string authToken = "2a85f4bd-30db-4b7d-8f41-b046b0566cb3"; //Currently the Access Token due to sandbox restrictions. 
      const string apiBaseUri = "https://services.greenbuttondata.org:443"; //Who we are Calling Web API 
      const string apiGetPeoplePath = "/DataCustodian/espi/1_1/resource/MeterReading"; //What we want from Them 
      var response = GetRequest(authToken, apiBaseUri, apiGetPeoplePath).Result;//Captures there reason 
      //responseString().results; 
      XMLLabel.Text = response; 
     } 

     static async Task<string> GetRequest(string token, string apiBaseUri, string requestPath) 
     { 
      using (var client = new HttpClient()) 
      { 
       //setup client 
       client.BaseAddress = new Uri(apiBaseUri); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/atom+xml")); 
       client.DefaultRequestHeaders.Add("Authorization", "Bearer 2a85f4bd-30db-4b7d-8f41-b046b0566cb3"); 

       //make request 
       HttpResponseMessage response = await client.GetAsync(requestPath).ConfigureAwait(false); 
       var Conn = response; 
       var responseString = await response.Content.ReadAsStringAsync(); 
       var XML = responseString; 
       //Label l2 = new Label(); 
       //l2.Text = XML; 
       return responseString;  
      } 

     } 
     //public void responseString(string XML) 
     //{ 
     // Label l2 = new Label(); 
     // l2.Text = XML; 
     //} 
    } 

} 

我也試過這在另一臺計算機上的另一個網絡上,仍然有同樣的問題。過去兩天有什麼變化?這是在GreenButtons結束?我怎麼知道他們什麼時候下來,或者是我?

+1

您應該隱藏您的帖子中的authToken。而你得到的錯誤是403,這意味着一切都很好,除非你不能獲取數據。因此,如果令牌對您正在獲取的數據仍然有效,請檢查您的greenbutton帳戶 – Massanu

+0

嘿,令牌和所用信息對所有人開放,因爲它是Sandbox API的一部分,因此它們都不敏感。儘管如此,這個相同的信息在一天前得到了響應代碼200。現在我得到403,但我不能解釋爲什麼。我一直在玩這個代碼已經有一週左右的時間了,所以很奇怪它在它長時間運行的時候停止了工作。該頁面顯示的訪問代碼是一個靜態元素,並且在幾年內沒有改變 – vmedhe2

+0

好吧我只是使用自己的API調用生成器檢查了他們的開發者api頁面,並且我得到了403個代碼。所以這是從他們身邊傳來的,他們可能改變了一些你應該聯繫他們的東西,你的代碼隊友沒有什麼不對。 – Massanu

回答

0

是的問題顯然是在他們的最後。他們沒有地位或其他方式來確保它已經關閉,我只是通過電子郵件發送綠色按鈕,他們迴應。上面的代碼工作,所以如果你在同一條船上,請繼續前進,祝你有美好的一天!