0

RestSharp を使用して VS 2015 の Xamarin.Android appl から POST 要求を送信していますが、応答がありません。タイムアウトを増やしましたが、応答がありません。ポストマンでは動作しますが、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

4

2 に答える 2

0

これは解決されました。問題は「コンテンツ タイプ」にありました。次のようにコンテンツタイプを追加していました:

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

しかし、何らかの理由でコンテンツタイプが設定されていなかったため、リクエストがサーバーからシャットダウンされ、ステータスコード0が返されました。代わりに、次のことを行ったところ、正常に機能しました。

request.JsonSerializer.ContentType = "application/json; charset=utf-8";
于 2017-01-10T07:23:16.140 に答える
0

これがどこで失敗するかわからない場合は、ヘッダーを正しく渡していないか、本文メッセージに正しい JSON 形式がない可能性があります。以下のリンクでそれを確認し、それが正しいことを確認できます

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

于 2017-01-03T12:15:19.427 に答える