2015-05-25 20 views
6

tôi cần phải gọi REST của thiết bị đầu cuối nàyLàm thế nào để gửi đúng yêu cầu PATCH

PATCH https://graph.windows.net/contoso.onmicrosoft.com/users/[email protected]?api-version=1.5 HTTP/1.1 

{ 
    "<extensionPropertyName>": <value> 
} 

Xin xem tài liệu ở đây: https://msdn.microsoft.com/en-us/library/azure/dn720459.aspx

Tôi có đoạn code sau để thiết lập giá trị của một tài sản cho một người sử dụng:

public async Task<ActionResult> AddExtensionPropertyValueToUser() 
     { 
      Uri serviceRoot = new Uri(azureAdGraphApiEndPoint); 
      var token = await GetAppTokenAsync(); 
      string requestUrl = "https://graph.windows.net/mysaasapp.onmicrosoft.com/users/[email protected]?api-version=1.5"; 

      HttpClient hc = new HttpClient(); 
       hc.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); 

      var method = new HttpMethod("PATCH"); 

      var request = new HttpRequestMessage(method, requestUrl) 
      { 
       Content = new StringContent("{ \"extension_33e037a7b1aa42ab96936c22d01ca338_Compania\": \"Empresa1\" }", Encoding.UTF8, "application/json") 
      }; 

      HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl)); 
      if (hrm.IsSuccessStatusCode) 
      { 
       string jsonresult = await hrm.Content.ReadAsStringAsync(); 
       return View("TestRestCall", new SuccessViewModel 
       { 
        Name = "The Title", 
        Message = "The message", 
        JSON = jsonresult.ToJson() 
       }); 
      } 
      else 
      { 
       return View(); 
      } 
     } 

Tuy nhiên thay vì respongint với 204 thuộc tính người dùng, vì vậy tôi đoán có điều gì đó không ổn với phần còn lại của tôi GỌI

http://screencast.com/t/LmoNswKIf2

+0

Bạn đề cập đến bạn không nhận được 204, nhưng thuộc tính tiện ích mở rộng đã được viết ? –

Trả lời

8

Tôi nghĩ vấn đề của bạn là dòng này:

HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl)); 

này sẽ gửi một yêu cầu HTTP GET đến URL mà bạn cung cấp, mà trong trường hợp này tham chiếu người dùng "[email protected] .com ". Đó là lý do tại sao bạn thấy tất cả các thuộc tính của người dùng được trả về trong phản hồi.

Tôi nghĩ rằng những gì bạn muốn làm là gửi PATCH HttpRequestMessage mà bạn đã tạo. Để thực hiện điều này, bạn cần sử dụng phương thức SendAsync và cung cấp HttpRequestMessage làm tham số. Nếu bạn thay đổi dòng ở trên thành những điều sau đây, tôi nghĩ bạn sẽ đặt giá trị thuộc tính và nhận được 204 Không có phản hồi Nội dung:

HttpResponseMessage hrm = await hc.SendAsync(request); 
+0

plus1 để bắt, :) –

+0

Xin chào Jimaco, tôi đang sử dụng sendAsync, nhưng vẫn gặp phải sự cố: Bất kỳ con trỏ nào? http://stackoverflow.com/questions/36023821/how-to-pass-the-following-json-to-a-c-sharp-patch-method-w-or-w-o-javascript-ser/36027802#36027802 –

Các vấn đề liên quan