1

私は現在、基本的な http 認証で動作する Spreedly REST API を使用しています。

最初に、資格情報を次のように設定しました。

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

これは、新しいゲートウェイの POST、ゲートウェイの GET、ゲートウェイへのデータの PUT、さらにはゲートウェイの編集など、多くの API リソースでうまく機能しました。

リソースで新しい payment_method を POST しようとしたときに壁にぶつかりました/v1/payment_methods.<format>

私が得ているエラー:

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

いろいろ検証した結果、そちらの例を元にcurlでやってみたらうまくいきました。

問題は、他の作業リソースに使用するのと同じコードであっても、HttpWebRequest で資格情報を設定する方法にあるようです。

「Basic」を指定できたので 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 に答える