Как отправить запрос PUT в xamarin. android? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь отправить запрос PUT при нажатии кнопки из моего xamarin. Приложение android для обновления записи в моей базе данных следующим кодом:

Я попытался отправить эти json данные используя почтальон, и это сработало:

{'status': 'On'}

Но когда я попытался отправить это в моем приложении xamarin. android, оно не работает.

Ошибка: удаленный сервер возвращает ошибку (500 ) Внутренняя ошибка сервера

Функция:

        private async void SendAPIRequest(string method, string jsonrequest)
        {
            HttpWebRequest request = new HttpWebRequest(new Uri(String.Format("http://192.168.0.179:8080/api/devices/update/1")));//address of request
            request.Method = "PUT";

            request.ContentType = "application/json; charset=utf-8";

            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                streamWriter.Write(jsonrequest);
                streamWriter.Flush();
            }

            HttpWebResponse httpResponse = (HttpWebResponse)(await request.GetResponseAsync());
            string json;
            using (Stream responseStream = httpResponse.GetResponseStream())
            {
                json = new StreamReader(responseStream).ReadToEnd();//read the Json and assign it to a variable
            }
        }

Нажатие кнопки

        private void BtnRequest_Click(object sender, EventArgs e)
        {
            string request = @"{'status': 'On'}";
            SendAPIRequest("PUT", request);
        }

PS: это только тест API, поэтому аутентификация не требуется.

1 Ответ

0 голосов
/ 09 января 2020

Попробуйте использовать try catch для деформации вашего кода.

try
{
    HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;

    WebResponse wr = req.GetResponse();
}
catch (WebException wex)
{
    var pageContent = new StreamReader(wex.Response.GetResponseStream())
                          .ReadToEnd();
}

См. Знакомый случай: { ссылка }.

...