Проблемы с WebAPI и асинхронностью для поставщика SMS

#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() сам. Я что-нибудь упускаю?