Green Button是美国政府的能源项目。我正在尝试编写代码来获取他们的数据,并且他们创建了SandBox。就在最近我收到了数据,一切都很顺利,直到两天前突然我不再从Greenbutton获得数据,完全出乎意料!在Sandbox中,我在访问令牌盒中使用了datacustodian_access_token:Bearer 2a85f4bd-30db-4b7d-8f41-b046b0566cb3。然后我启动了GET / espi / 1_1 / resource / MeterReading。以前工作给我响应代码200和原子xml。现在它给了我响应代码403 Forbidden,我回来了:
<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上的这个结尾了吗?我如何知道他们何时失败,或者是我?
答案 0 :(得分:0)
是的,问题显然已经结束了。他们没有地位或其他方式确定它已经失效,我只是通过电子邮件发送绿色按钮,他们回应。上面的代码是有效的,如果你在同一条船上请继续,祝你有个美好的一天!