2017-11-28 6 views
0

私はC#REST Web APIを持っていますが、エンドポイントにリクエストするこのようなコードがあります。私が渡したいデータのいくつかは、自分のタイプのオブジェクトです。複雑なオブジェクトなので、POSTを使って渡したいと思います。他の側ではRestSharp Post ObjectをJSONとして使用し、コールの反対側から読み取る

RestClient client = new RestClient(Constants.Endpoints.serviceEndPoint) 
{ 
    Timeout = 1000 
}; 

string requestResource = Constants.Endpoints.apiEndPoint; 
RestRequest request = new RestRequest(requestResource, Method.POST); 
request.AddParameter("Authorization", $"Bearer {accessToken}", ParameterType.HttpHeader); 
request.AddHeader("Accept", "application/json"); 
request.AddParameter("id", id, ParameterType.UrlSegment); 
request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody); 

IRestResponse response = client.Execute(request); 

、私はこの

var provider = new MultipartMemoryStreamProvider(); 

await Request.Content.ReadAsMultipartAsync(provider); 

    foreach (var content in provider.Contents) 
    { 
     // what should I do here to read the content as a JSON 
     // and then transform it as the object it used to be before the call? 
    } 

のようないくつかのコードとオブジェクト自体を読みしようとしている私は、を実行しようとしました(> content.ReadAsJsonAsync <がMyTypeを待ちます)。でも試しましたawait content.ReadAsStringAsync();があり、いずれも動作しませんでした。私はクライアントで実行するときに何か間違っているのですか?それとも、コンテンツを読んでいる間に私が反対側でやっていることですか?代わりに、この行の

+1

[Fiddler](https://www.telerik.com/fiddler)などのデバッグプロキシを使用して実際にサーバーに送信されているものを確認しようとしましたか? –

+0

私は実際にFiddlerを使用しましたが、送信される値がオブジェクトのJSON形式ではないことに気付きました。 request.AddParameterが間違っていることを意味しますか? – user3587624

答えて

1

は: request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody);

あなたは.AddBody(object)メソッドを使用する必要があります。 は、だから、コードは次のようになります:あなたはMVC/WebAPIのを使用している場合、サーバー上で

RestRequest request = new RestRequest(requestResource, Method.POST); 
//add other headers as needed 
request.RequestFormat = DataFormat.Json; 
request.AddBody(objectIWantToSerialize); 

IRestResponse response = client.Execute(request); 

を、あなただけの入力としてC#型を置くことができますし、ASP.NETは、あなたのためにそれをデシリアライズします。そうでない場合は、どのようにリクエストを受け取っているかについての詳細を提供できますか?

+0

これは実際に動作するようです。ありがとう! – user3587624

関連する問題