2017-11-28 48 views
0

C# REST 웹 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을 기다리고하려고 노력;뿐만 아니라 시도했습니다 기다리고 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