REST POST не отвечает в приложении Xamarin.Android. Он отвечает почтальоном, но не приложением.

Я отправляю запрос POST из приложения Xamarin.Android в VS 2015 с помощью RestSharp, но ответа не приходит. Я увеличил время ожидания, но ответа нет. ЭТО РАБОТАЕТ С POSTMAN, но не с приложением для Android.

 RestClient client = new RestClient("https://" + orgId + ".internetofthings.ibmcloud.com");
 RestRequest request = new RestRequest("/api/v0002/application/types/" + typeId + "/devices/" + deviceId + "/events/" + typeId + deviceId, Method.POST);

        byte[] byteArray = Encoding.UTF8.GetBytes(username + ":" + password);
        string authenticationToken = Convert.ToBase64String(byteArray);

        request.AddHeader("Authorization", "Basic " + authenticationToken);
        request.Timeout = 2000000;
        request.AddJsonBody(newVal);


        IRestResponse response = client.Execute(request);
        return response.StatusCode.ToString();`

Я отправляю только "newVal" (строка) в теле. Это работает с почтальоном. Пожалуйста, дайте мне знать, если требуется дополнительное объяснение. ОГРОМНОЕ СПАСИБО.

Среда: Visual Studio 2015, RESTSharp, Xamarin.Android, сервер: IBM BlueMix


person TalhaAhmed    schedule 30.12.2016    source источник


Ответы (2)


не уверен, где это терпит неудачу, возможно, вы неправильно передаете заголовок или основное сообщение не имеет правильного формата JSON. Вы можете проверить это по ссылке ниже и убедиться, что это правильно

https://docs.internetofthings.ibmcloud.com/swagger/v0002.html#/

person idan    schedule 03.01.2017

Это решено, проблема была с «типом контента». Я добавлял тип контента как:

request.AddHeader("Content-Type","application/json");

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

request.JsonSerializer.ContentType = "application/json; charset=utf-8";
person TalhaAhmed    schedule 10.01.2017