2017-11-23 1 views
0

사용자 정의 헤더 패치를 추가C#을 - 당신은 단지 getasync, postasync, putasync을 가지고 비동기를 보낼 자 마린 그렇게 자 마린 양식은 ... 나는 PATCH 헤더를 필요로하는 REST 전체 API를 사용하고

하지만 나는

Folder add_list_to_folder = new Folder() 
        { 
         // revision is required, so we take the current revision and add one to it. 
         revision = folder_to_be_updated.revision += 1, 
         list_ids = arr_of_lists 
        }; 

이제

이 내가 현재 패치를 통해 전송되어야하는 코드 패치 비동기 방식을 (또는 그러한 요청을 할)/추가하는 방법에 대한 단서가 없다 그게 seialized 얻을 필요가 생각, 이렇게 :

response = await client.PostAsync(url, 
        new StringContent(
         JsonConvert.SerializeObject(add_list_to_folder), 
         Encoding.UTF8, "application/json")); 

하지만 게시물이므로 어떻게 패치 신청을 할 수 있습니까?

답변

1

HttpClient과 함께 완전히 맞춤식으로 요청을 보낼 수 있어야합니다. PATCH은 매우 일반적인 동사가 아니기 때문에 축약어가 아닙니다. 여러 장소에서 사용하는 경우

var method = new HttpMethod("PATCH"); 

var request = new HttpRequestMessage(method, url) { 
    Content = new StringContent(
        JsonConvert.SerializeObject(add_list_to_folder), 
        Encoding.UTF8, "application/json") 
}; 

var response = await client.SendAsync(request); 

, 같은 확장 방법을 포장 할만큼 깔끔한 수 있습니다 : 내 머리의 상단에서

,이 같은 시도

을 이제
public static async Task<HttpResponseMessage> PatchAsync(this HttpClient client, Uri requestUri, HttpContent httpContent) 
{ 
    // TODO add some error handling 
    var method = new HttpMethod("PATCH"); 

    var request = new HttpRequestMessage(method, requestUri) { 
     Content = httpContent 
    }; 

    return await client.SendAsync(request); 
} 

당신이 게시물처럼 HttpClient에 직접 전화를 걸거나 방법을 얻을 수 있어야합니다 예 :

var client = new HttpClient(); 
client.PatchAsync(url, new StringContent(
        JsonConvert.SerializeObject(add_list_to_folder), 
        Encoding.UTF8, "application/json"));