#c# #api #asynchronous
#c# #API #асинхронный
Вопрос:
Я пытаюсь вызвать API, предоставляемый службой SMS VoodooSMS. У них нет никакой документации о том, как реализовать на c #. я попытался выполнить следующее, однако это никогда не прерывается при ответе.Код состояния. Используя fiddler, я вижу, что запрос отправлен, но с 0 байтами в качестве содержимого и без ответа от сервера. Я включил ключ live API, поэтому, пожалуйста, имейте в виду, это скоро будет изменено, но там есть 20 кредитов для тестирования.
Это документация от Voodoo SMS https://www.voodoosms.com/api/#introduction
async Task<string> sendVoodooSMS(ClientSMS clientSMS)
{
var request = WebRequest.Create("https://api.voodoosms.com/balance") as HttpWebRequest;
request.Method = "GET";
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer BPNLmUBX9mjvYjN1kSgVW8wCocCnabPcrdoSzpryRRiq2w");
var response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
Console.WriteLine(response.StatusCode);
}
else
{
Console.WriteLine(response.StatusCode);
}
return response.StatusCode.ToString();
}
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles = "clients")]
public ActionResult sendSMS(ClientSMS clientSMS)
{
///
///
/// TEST VOODOO SMS
///
///
var voodooMessageResponse = this.sendVoodooSMS(clientSMS);
}
Никогда раньше не писал сервис для использования RESTful API на C #, только в AJAX, так что я немного застрял. Любая помощь приветствуется.
ОБНОВЛЕНИЕ: Извините, просто чтобы уточнить, точка останова в этой строке, если (ответ.StatusCode == HttpStatusCode.OK) никогда не выполняется, код возвращается к вызывающему методу. Вызывающий метод находится внутри моего контроллера, который я хочу дождаться результата, чтобы я мог обновить возвращаемый тип метода до следующего.
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles = "clients")]
public async Task<ActionResult> sendSMS(ClientSMS clientSMS)
{
///
///
/// TEST VOODOO SMS
///
///
var voodooMessageResponse = await this.sendVoodooSMS(clientSMS);
Fiddler показывает это, что для меня вообще не имеет смысла.
Комментарии:
1. Не очень ясно, на какой строке это не прерывается.
2. Ваш код не асинхронен, но это нормально. Должен быть какой-то ответ, сообщите нам код состояния.
3. «нет ответа от сервера» — вы тестировали этот запрос (и токен на предъявителя) с помощью Postman?
4. API использует SSL. Так что, вероятно, проблема на уровне TCP. HTTP использует TCP в качестве транспортного уровня. Проверьте, отправляется ли какой-либо TCP, и найдите [FIN], указывающий на закрытие соединения. Также проверьте настройки браузера IE, чтобы узнать, включен ли SSL. Инструменты: Свойства обозревателя: Дополнительно.
5. Выполнил код, предоставленный с моей стороны. В нем говорится: «Удаленный сервер вернул сообщение об ошибке: (404) Не найдено». по запросу.GetResponse() сам. Я что-нибудь упускаю?