【发布时间】:2017-10-04 19:53:48
【问题描述】:
我有一个 WooCommerce 提供的 cURL 命令:
curl https://example.com/wp-json/wc/v2/orders \
-u consumer_key:consumer_secret
我正在使用 WebClient:
using (WebClient wc = new WebClient())
{
Uri url = new Uri("https://www.myhost.com/wp-json/wc/v2/orders");
System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
reqparm.Add("consumer_key", keyValue);
byte[] responsebytes = wc.UploadValues(url, "POST", reqparm);
string responsebody = Encoding.UTF8.GetString(responsebytes);
}
但是我收到了这个错误:
IOException:无法从传输连接读取数据:现有连接被远程主机强行关闭。
我在这里做错了什么?我很确定我的网址和密钥是正确的。
编辑:刚刚按照 CmdrTchort 和 David 的建议尝试过这个:
using (WebClient wc = new WebClient())
{
wc.UseDefaultCredentials = true;
wc.Credentials = new NetworkCredential("consumer_key", keyValue);
string responsebody = wc.DownloadString("https://www.myhost.com/wp-json/wc/v2/orders");
}
仍然收到同样的错误。
编辑:我怀疑我收到了无效的凭据,一旦清楚,我将更新...
我获得了错误的凭据。然而这并没有解决问题。
我不明白consumer_key:consumer_secret 应该如何在此请求中表示。有两个值:consumer_key 和 consumer_secret(我之前只提供了 consumer_secret,我把它放在了 keyValue 所在的位置)。我现在假设它应该是以下形式:
wc.Credentials = new NetworkCredential("consumer_key", "consumer_secret");
其中“consumer_key”和“consumer_secret”表示提供的唯一值。这不起作用。这开始有点烦人了。
【问题讨论】:
-
由于错误信息,看起来像是处理证书或 SSL/TLS 版本问题或不匹配
-
您提到您有他们提供的 cURL 命令,但是您是否从您尝试通过 WebClient 访问的工作站对其进行了测试?它可能有助于更好地隔离问题,以了解 cURL 是否发生相同的问题,并指导您是否应该查看自己的代码或您与 Web 服务之间的其他内容。