REST POST在Xamarin.Android App中没有响应。它正在回应Postman但不是应用程序。

时间:2016-12-30 11:23:45

标签: android rest xamarin.android visual-studio-2015 watson-iot

我正在使用RestSharp从VS 2015上的Xamarin.Android应用程序发送POST请求,但没有响应到达。我增加了超时但没有响应。它正在使用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" (字符串)在体内。这适用于Postman。如果需要更多解释,请告诉我。非常感谢。

环境: Visual Studio 2015,RESTSharp,Xamarin.Android,服务器:IBM BlueMix

2 个答案:

答案 0 :(得分:0)

不确定失败的原因可能是您没有正确传递标头,或者正文消息没有正确的JSON格式。您可以在下面的链接上查看它并确保它是正确的

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

答案 1 :(得分:0)

这已解决,问题与'内容类型'有关。我正在添加内容类型:

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

但内容类型由于某种原因没有设置,这就是我的请求从服务器关闭并返回状态码0的原因。 所以相反,我做了以下工作并且工作正常。

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