2016-11-22 52 views
1
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密鑰 - 」}的Clickate:無效或缺少集成的API密鑰

但是我的API密鑰完全按照Clickatell的定義。

附加信息: Clickatell網站顯示以下Json捲曲調用(注意:爲了測試,我無法使用捲曲工作)。

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 

唯一的區別是我指定我的令牌作爲不記名令牌。沒有它,我會得到一個格式異常。

謝謝任何​​人誰可能會對我的問題有所瞭解。

+0

另一個有趣的事情是... API接受Accepted(202)響應,儘管它已經明確地解決了我的API密鑰問題。 – kraeg

回答

0

我想我已經完成了。它看起來像我需要使用一個無效的授權標題。

httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "z2zbgb4bRWeaImcjrhmWww=="); 
0

爲了解決這個問題,請按照下列步驟操作:

  1. 登錄到您的Clickate帳戶。
  2. 轉到SMS集成(左側菜單)。
  3. 選擇(點擊)您的集成名稱。
  4. 您會在API Key後面找到更新按鈕。
  5. 點擊更新按鈕,它會更新您的API密鑰。
  6. 現在保存或發佈您的集成。
  7. 確保您的SMS集成應處於活動模式。 (你可以改變從SMS整合狀態(左側菜單)狀態選項卡)

創建一個實體(名稱:OTPRequestEntity)

public class OTPRequestEntity 
{ 
    [JsonProperty("content")] 
    public string content { get; set; } 

    [JsonProperty("to")] 
    public List<string> to { get; set; } 
} 

轉到您的代碼,並添加標題: -

OTPResponseEntity entOTPResponseEntity = new OTPResponseEntity(); 
List<string> numbers = new List<string>(); 
numbers.Add("Your Mobile Number"); 
string apiBaseAddress = "https://platform.clickatell.com"; 
var objHttpClient = new HttpClient(); 
objHttpClient.BaseAddress = new Uri(apiBaseAddress); 
objHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
objHttpClient.DefaultRequestHeaders.Add(HttpRequestHeader.ContentType.ToString(), "application/json"); 
objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Your API Key"); 
var vendRequest = new OTPRequestEntity 
{ 
    content = "Your Message.", 
    to = numbers 
}; 
HttpResponseMessage apioresponse = await objHttpClient.PostAsJsonAsync("/messages", vendRequest).ConfigureAwait(false); 
apioresponse.EnsureSuccessStatusCode(); 
if (apioresponse.StatusCode == HttpStatusCode.Accepted) 
{ 
    string responseString = await apioresponse.Content.ReadAsStringAsync().ConfigureAwait(false); 
    entOTPResponseEntity = JsonConvert.DeserializeObject<OTPResponseEntity>(responseString); 
} 

in entOTPResponseEntity您將得到的對象API響應

2

測試API手動

您可以使用谷歌瀏覽器

步驟的郵差APP檢查: -

  1. 安裝郵差(轉到谷歌的郵遞員Chrome應用部分搜索)
  2. 創建一個API
  3. 選擇方法爲POST
  4. 添加此URL https://platform.clickatell.com/messages
  5. 進入頁眉部分並添加頁眉
  6. 添加關鍵= Content-Type的,值= 應用/ JSON
  7. 添加項= 接受,值= 應用程序/ json
  8. 添加密鑰= 授權,值= 您的API密鑰
  9. 進入主體部分
  10. 選擇爲原料
  11. 中含量的不同

    { 「內容」 補充一點: 「測試消息」, 「到」: 「919999999999」] }

  12. 點擊發送

  13. 你會發現這種反應。

通過以下上述方法可以還測試您API手動

相關問題