1

我正在尝试连接到 API(在本例中为 freeagent)以获取一些数据。我使用 Googles OAuth Playground 为我生成了一个令牌。

var req = (HttpWebRequest)WebRequest.Create("https://api.freeagent.com/v2/recurring_invoices");

req.Headers["Authorization"] = "Bearer " + Convert.ToBase64String(Encoding.ASCII.GetBytes(_accessToken));

req.ContentType = "application/xml";
req.Accept = "application/xml";
req.Method = "GET";

// and get the response
var resp = req.GetResponse();
var streamIn = new StreamReader(resp.GetResponseStream());
returnData = streamIn.ReadToEnd();
streamIn.Close();

return resp;

现在我正在尝试转换以下内容:https ://dev.freeagent.com/docs/using_curl

我经常收到错误请求 HTTP 400 - 有人对可能导致此问题的原因有任何建议吗?

4

3 回答 3

2

我有大部分使用 RestSharp 工作的 api:

https://github.com/nicwise/FreeAgent

我是为我的 iPhone 应用程序 mobileAgent 编写的,但它是相当基本的 .NET,所以它应该适用于任何东西。

我的身份验证注入代码看起来很像你的:

protected void SetAuthentication(RestRequest request)
{
  request.AddHeader("Authorization", "Bearer " +
Client.CurrentAccessToken.access_token);
}

你有没有运行提琴手或类似的东西来看看到底发生了什么?这通常会有所帮助。

于 2013-01-11T10:12:54.347 回答
2

对此的解决方案是也传递 UserAgent。

例子...

req.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17";
于 2013-01-11T17:49:55.697 回答
0

您不需要对令牌进行 base64 编码,只需将 Authorization 标头设置为“Bearer”+ _accessToken。如果这仍然不起作用,请尝试使用http://httpbin.org/get作为 URL 来查看您的请求,看看是否还有其他可能的问题。

于 2013-01-10T17:11:58.520 回答