1

我目前正在使用与基本 http 身份验证一起使用的 Spreedly REST API。

起初,我这样设置我的凭据:

webRequest.Credentials = new System.Net.NetworkCredential(user, password);

它适用于许多 API 资源,包括 POST 新网关、GET 网关、PUT 网关数据,甚至编辑网关。

/v1/payment_methods.<format>当我试图在他们的资源上发布一个新的 payment_method 时,我碰壁了。

我得到的错误:

HTTP 422
{
  "errors": [
    {
      "key": "errors.environment_key_parameter_required",
      "message": "You must specify an environment_key parameter."
    }
  ]
}

在验证了很多东西之后,我根据他们的示例使用 curl 进行了尝试,并且成功了。

问题似乎在于我在 HttpWebRequest 中设置凭据的方式,即使它与我用于其他工作资源的代码相同。

我尝试使用 CredentialCache,因为我可以指定“基本”,但它以同样的方式失败:

CredentialCache cache = new CredentialCache();
cache.Add(webRequest.RequestUri, "Basic", new System.Net.NetworkCredential(user, password));
webRequest.Credentials = cache;
4

1 回答 1

1

这是有效的:

我按照https://stackoverflow.com/a/13956730/5869109中的建议创建了自己的授权 HTTP 标头,并且效果很好:

String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1")
.GetBytes(user + ":" + password));
webRequest.Headers.Add("Authorization", "Basic " + encoded);
于 2016-02-10T16:45:44.763 回答