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;
}结果为:{"messages":[],“error”:“集成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唯一的区别是我将我的令牌指定为持有者令牌。如果没有它,我会得到一个格式异常。
感谢任何可能对我的问题有所了解的人。
发布于 2017-02-27 18:13:52
手动测试接口的
您可以使用Google Chrome的Postman应用程序进行查看
步骤:-
postman)
将此URL键添加到标题部分并添加标题
e222>,value =application/json
Add Key =Authorization,Accept=将您的API Key
Go选择到正文部分
 as 
在contant中添加以下内容{ "content":“测试消息”,"to":"+919999999999“}
单击send
,您将找到相应的响应。通过以上步骤,您还可以手动测试您的接口。
发布于 2016-11-22 20:06:58
我想我已经想好了。看起来我需要使用一个无效的授权头。
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "xxxxxxxxxxxxxxxxxxxxxx==");发布于 2017-02-27 17:54:40
要解决此问题,请执行以下步骤:
创建一个实体(名称: 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);
}在entOTPResponseEntity对象中,您将获得接口响应。
https://stackoverflow.com/questions/40736602
复制相似问题