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結束?我怎麼知道他們什麼時候下來,或者是我?
您應該隱藏您的帖子中的authToken。而你得到的錯誤是403,這意味着一切都很好,除非你不能獲取數據。因此,如果令牌對您正在獲取的數據仍然有效,請檢查您的greenbutton帳戶 – Massanu
嘿,令牌和所用信息對所有人開放,因爲它是Sandbox API的一部分,因此它們都不敏感。儘管如此,這個相同的信息在一天前得到了響應代碼200。現在我得到403,但我不能解釋爲什麼。我一直在玩這個代碼已經有一週左右的時間了,所以很奇怪它在它長時間運行的時候停止了工作。該頁面顯示的訪問代碼是一個靜態元素,並且在幾年內沒有改變 – vmedhe2
好吧我只是使用自己的API調用生成器檢查了他們的開發者api頁面,並且我得到了403個代碼。所以這是從他們身邊傳來的,他們可能改變了一些你應該聯繫他們的東西,你的代碼隊友沒有什麼不對。 – Massanu