2
using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("https://platform.clickatell.com/");

    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "wyOtm7-eRq-dSHWORr6hfw==");

    var stringContent = new StringContent("{\"content\":\"Test Message\",\"to\":[\"61400000000\"]}");
    stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    var httpResponseMessage = AsyncHelper.RunSync(() => httpClient.PostAsync("messages", stringContent));

    var result = httpResponseMessage.Content.ReadAsStringAsync().Result;
}

結果は次のとおりです: {"メッセージ":[]、"エラー":"統合 API キーが無効または欠落しています。 - "}

しかし、私の API キーは Clickatell によって定義されたものとまったく同じです。

追加情報: Clickatell サイトには、次の Json curl 呼び出しが表示されます (注: テストのために curl を動作させることができません)。

CURL CALL:
==========
curl -i \
-X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: wyOtm7-eRq-dSHWORr6hfw==" \
-d '{"content": "Test Message Text", "to": ["61400000000"], "from": "+1234567890"}' \
-s https://platform.clickatell.com/messages

唯一の違いは、トークンをベアラー トークンとして指定していることです。それがないと、フォーマット例外が発生します。

私の問題に光を当てることができる人に感謝します。

4

3 に答える 3

1

私はそれを解決したと思います。無効な認証ヘッダーを使用する必要があるようです。

httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "xxxxxxxxxxxxxxxxxxxxxx==");
于 2016-11-22T12:06:57.583 に答える