1

API(この場合はfreeagent)に接続して、データを取得しようとしています。GoogleのOAuthPlaygroundを使用してトークンを生成しました。

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

私は常に悪いリクエストHTTP400を受け取ります-この問題を引き起こしている可能性があるものについて誰かが何か提案がありますか?

4

3 に答える 3

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 に答える
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 に答える
0

You shouldn't need to base64 encode the token, just set the Authorization header to "Bearer " + _accessToken. If this still doesn't work, try using http://httpbin.org/get as the URL to look at your request to see if there are any other possible problems.

于 2013-01-10T17:11:58.520 に答える