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

标签 c# rest authentication restful-authentication chargify

我正在尝试对 Chargify API 上的简单 GET 请求进行身份验证。我可能遗漏了有关如何将凭据传递给服务的详细信息。

我收到以下错误:

"The underlying connection was closed: An unexpected error occurred on a send."

"Authentication failed because the remote party has closed the transport stream."

我使用的代码如下:

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 扩展“Advanced REST Client”,我使用上面的 url 发出 GET 请求,然后 chrome 在其传统弹出窗口中询问凭证,我将我的 api key 和“x”作为密码,然后我得到一个在 json 中回答我所期望的。所以我知道 api key 是正确的,我缺少的是如何通过请求在 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

关于c# - 无法在 Chargify REST API 上进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774271/

相关文章:

C# 停止 TCP 文件传输

java - 如何通过 Rest API 发送 JSONArray

java - 为什么这个 HashMap 在 Jersey/Tomcat 中的格式不正确?

rest - 如何修复 dotnet core web api 中的 No 'Access-Control-Allow-Origin' 错误

java - 在使用 LdapContext 的 Websphere 6.x LDAP 查询中,凭据的传输是否加密?

c# - 具有无效返回值的 Guava 函数<>?

c# - 向 wpf 行为注入(inject)依赖的干净方法

c# - 计算类计数的部分语法

python - JIRA-Python 的基本身份验证不再适用于 REST API 调用。接下来是什么?

wcf - WCF 安全模型的概念概述?