我试图对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扩展"Advanced“,我使用上面的url进行GET请求,然后在它的传统弹出窗口中请求证书,我将api键和'x‘作为密码,然后我在json中得到了我所期望的答案。所以我知道api键是正确的,我缺少的是如何通过请求传递C#中的信息。
在文档中使用curl,他们给出了下面的示例:
curl -u api-key:x https://subdomain.chargify.com/customers.xml你知不知道,这个卷曲的-u参数应该如何转换成C#?
谢谢!
正如我在注释中建议的那样,编辑,我尝试使用.NET包装,但我得到了确切的错误。下面是我的代码示例:
var _apiConnection = new ChargifyConnect(url, _userName, _password);
var productList = _apiConnection.GetProductList();发布于 2016-01-14 14:15:13
由于连接刚刚关闭,没有回复,这可能与本周生效的TLS 1.2要求有关。
发布于 2018-02-15 14:24:55
我通过显式地将TLS版本设置为1.2来修正这个问题。只需在调用Chargify之前添加以下代码:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12https://stackoverflow.com/questions/34774271
复制相似问题