2

GoDaddy でアカウントをセットアップし、API にアクセスするための開発者キーを持っています。Fiddler を使用すると、結果を返すリクエストを作成できます。ただし、コンソール アプリケーションから次のコードを使用すると、「Unauthorized」で失敗します。両方の場所で同じアドレスとキーを使用しています。

私は何が欠けていますか?

        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

            HttpResponseMessage response = await client.GetAsync("https://api.ote-godaddy.com/v1/domains/available?domain=google.com");

            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsAsync<string>();
                Console.WriteLine(result);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }

注: 認証キーとシークレットは変更されています。

以下は、動作する Fiddler で行うことです。

ここに画像の説明を入力

4

3 に答える 3

5

認証ヘッダーを次のように送信していることは確かです。

Authorization: Authorization sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ

代わりにこれを試してください:

client.DefaultRequestHeaders.Authorization = 
    new System.Net.Http.Headers.AuthenticationHeaderValue("sso-key", "VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

Authorization:プレフィックスは、メソッド呼び出しによって割り当てられます。

于 2016-03-17T15:28:37.180 に答える
1

その特定の呼び出しは認証を必要としません。これはうまくいくはずです。

    static void Main(string[] args)
    {
        TestDomain().Wait();
    }

    public static async Task<string> TestDomain()
    {

        using (var client = new HttpClient())
        {
            //client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

            HttpResponseMessage response = await client.GetAsync("https://api.ote-godaddy.com/v1/domains/available?domain=google.com");

            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsStringAsync();
                Console.WriteLine(result);

                return result;
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);

                return response.ReasonPhrase;

            }
        }

    }
于 2016-03-17T16:09:11.853 に答える