sumithasanka Ответов: 1

Служба Rest выдает внутреннюю ошибку 500 с кодом C#


я получаю ошибку при доступе к сервису rest с кодом C#, но он работает по запросу почтальона

вот код, который я написал

он выдает ошибку при выполнении этого кода

HttpWebResponse response =(HttpWebResponse) request.GetResponse();


Что я уже пробовал:

try
           {
               HttpWebRequest request =(HttpWebRequest) WebRequest.Create("https://smsmate.lk/api/sms/v2/send");
               request.Method = "POST";
               request.PreAuthenticate = true;

               request.Headers["Authorization"] = "ApiKey" + "XXXXXX-150a-4fae-9f43-ce6e49b92d4e";
               Mysms mymsg = new Mysms();
               mymsg.Message = "Test";
               mymsg.Addresses = "94719254547";
               // JsonConvert.DeserializeObject(mymsg);
               var postdata = "{" + "Message:" + mymsg.Message + "," + "Addresses:[" + mymsg.Addresses + "]}";
               byte[] byteArray = Encoding.UTF8.GetBytes(postdata);

               var data = Encoding.ASCII.GetBytes(postdata);

               //if (ContainsUnicodeCharacter(postdata))
               //{
               //    data = Encoding.UTF8.GetBytes(postdata);
               //}

               request.ContentType = "application/json";
               request.ContentLength = postdata.Length;
               Stream req = request.GetRequestStream();
               req.Write(byteArray, 0, byteArray.Length);
               req.Close();
               HttpWebResponse response =(HttpWebResponse) request.GetResponse();
               req = response.GetResponseStream();

           }
           catch (Exception ex)
           {
               throw ex;
           }

Richard Deeming

catch (Exception ex)
{
    throw ex;
}


Не делайте этого; это уничтожает трассировку стека исключения. Если вам действительно нужно повторно создать исключение, просто используйте throw;:
catch (Exception ex)
{
    throw;
}


Но в этом случае, поскольку вы ничего не делаете с исключением, нет никакого смысла ловить его. Просто уберите его try..catch заблокируйте и позвольте исключению распространиться на вызывающего абонента.

Richard Deeming

Если сервер возвращает код ошибки, request.GetResponse() будет бросать а WebException.

Поймать это исключение и рассмотреть ее Status и Response свойства, чтобы увидеть, какую ошибку вернул сервер.

1 Ответов

Рейтинг:
2

Graeme_Grant

Похоже на очень хрупкий API-сервер... Он должен проверять входящие запросы и давать ответы на ошибки.

Используйте что-то вроде Fiddler (Бесплатный Прокси-Сервер Веб - Отладки- Telerik)[^] для отладки фактических данных, отправляемых и сравниваемых с почтальоном. Скорее всего, вы посылаете не совсем то же самое.


sumithasanka

могу ли я загрузить PDF-документ api server здесь ?если да, то как ?

Graeme_Grant

Нет, ты не можешь. Вам нужно захватить и отладить необработанный пост из вашего кода ... сравнение с необработанным постом с почтальоном (который работает) даст вам ваш ответ.