2017-10-16 12 views
0

からUWP Appに追加すると、ユーザはテキストフィールドにjson bodyを入力し、restsharp portableを介してPOST Rest-Requestで本体として設定することができます。restSharp portable json bodyをユーザ入力フィールド

ので、テキストボックスに、ユーザーがタイプこの(値がrequestBodyにバインドされている):

{ "string": "Hello World"} 

、その後、私はリクエストに文字列を追加します。

request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody); 

体が追加されましたが、正しくありません。 サーバーは、着信json本体を解析しません。

何が問題なのか分かりませんが、一部の文字は正しくエンコードされていないと思います。

誰もこの方法でjsonボディを追加できませんでしたか? that'sはないきれいな方法私のために働いていたコードの

+0

完全なリクエスト定義とは何ですか? 'request.RequestFormat = DataFormat.Json;'を追加しましたか? –

+0

RestRequestクラスにRequestFormatメンバーがありません –

+0

コード全体を過ぎてもらえますか? –

答えて

1

var b = JsonConvert.DeserializeObject<Object>(requestBody); 
request.AddJsonBody(b); 

しかし:完全性については

var client = new RestClient("http://localhost"); 
var request = new RestRequest("pathtoservice", Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.AddParameter("application/json", "{ \"Some\": \"Data\" }", ParameterType.RequestBody); 
var result = client.Execute(request); 

を、


このソリューションは、動作しますRestSharp Portableを使用すると上記のようになります:

var client = new RestClient("http://localhost"); 
var request = new RestRequest("pathtoservice", Method.POST); 
var requestBody = Encoding.UTF8.GetBytes("{ \"Some\": \"Data\" }"); 
request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody); 
var result = client.Execute(request); 
+0

restsharp.portableライブラリでは、RestRequestクラスにRequestFormatというメンバーがありません –

+0

Ahaは、.NET Core/Portableを使用していたことを認識していませんでした(質問のタイトルに...)。 UTF-8で本文をエンコードしようとする可能性があります: 'var someBody = Encoding.UTF8.GetBytes(requestBody);'そしてそれをAddParameterメソッドで使用します。 –

+0

これは動作します: var someBody = Encoding.UTF8.GetBytes(requestBody); request.AddParameter( "application/json; charset = utf-8"、someBody、ParameterType.RequestBody);ありがとうございました –