无法在 Chargify REST API 上进行身份验证



我试图在Chargify API上对一个简单的GET请求进行身份验证。我可能缺少有关如何将凭据传递给服务的详细信息。

我收到以下错误:

"基础连接已关闭:发生意外错误 送。

"身份验证失败,因为远程方已关闭 传输流。

我使用的代码如下:

const string url = "https://subdomain.chargify.com/subscriptions.json";
var request = (HttpWebRequest)WebRequest.Create(url);
string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes("apikey:x"));
request.Headers[HttpRequestHeader.Authorization] = "Basic " + auth;
WebResponse response = request.GetResponse(); //THROW ERROR
using (Stream responseStream = response.GetResponseStream())
{
    var reader = new StreamReader(responseStream, Encoding.UTF8);
    return reader.ReadToEnd();
}

我正在按照 Chargify API 文档中的说明进行操作,您可以在此处查阅信息:

https://docs.chargify.com/api-authentication

https://docs.chargify.com/api-introduction

使用 chrome 扩展名"

高级 REST 客户端",我使用上面的 url 执行 GET 请求,然后 chrome 在其传统弹出窗口中询问凭据,我将我的 api 密钥和"x"作为密码,然后我得到 json 中的答案正是我所期望的。所以我知道 api 密钥是正确的,我缺少的是如何通过请求传递 C# 中的信息。

在文档中使用 curl,他们给出了这个例子:

 curl -u api-key:x https://subdomain.chargify.com/customers.xml

你知道,curl 中的这个 -u 参数应该如何在 C# 中翻译吗?

谢谢!

编辑如评论中所建议的,我尝试使用 .NET 包装器,但出现确切的错误。这是我的代码示例:

var _apiConnection = new ChargifyConnect(url, _userName, _password);
var productList = _apiConnection.GetProductList();

由于连接刚刚关闭而没有回复,这可能与本周生效的TLS 1.2要求有关。

https://docs.chargify.com/tls-upgrade-notice

我通过将 TLS 版本显式设置为 1.2 来解决此问题。 只需在对 Chargify 进行任何调用之前添加此代码:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

相关内容

  • 没有找到相关文章

最新更新