2015-05-25 5 views
6

Ich brauche diese REST-Endpunkt nennenWie Sie sich richtig ein PATCH Anfrage senden

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

{ 
    "<extensionPropertyName>": <value> 
} 

Bitte siehe Dokumentation hier: https://msdn.microsoft.com/en-us/library/azure/dn720459.aspx

ich den folgenden Code haben den Wert einer Immobilie für einen Benutzer zu setzen:

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(); 
      } 
     } 

jedoch statt respongint mit 204 (Kein), sein mit der gesamten Benutzereigenschaft reagiert, also denke ich, ist etwas falsch mit meinem Rest CALL-

http://screencast.com/t/LmoNswKIf2

+0

Sie erwähnen Sie nicht die 204 bekommen, wurde aber wurde das Erweiterungsattribut geschrieben ? –

Antwort

8

Ich denke, Ihr Problem ist diese Linie:

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

Dieser sendet eine HTTP-GET-Anforderung an die URL, die Sie liefern, die in diesem Fall der Benutzer „[email protected] verweist .com ". Aus diesem Grund sehen Sie alle Eigenschaften des Benutzers, die in der Antwort zurückgegeben werden.

Ich denke, was Sie tun möchten, ist die PATCH HttpRequestMessage, die Sie erstellt haben. Dazu müssen Sie die SendAsync-Methode verwenden und die HttpRequestMessage als Parameter angeben. Wenn Sie die Zeile der folgenden oben ändern, ich denke, Sie die Eigenschaft Wert gesetzt werden und Ihre 204 Kein Inhalt Antwort erhalten:

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

plus1 für den Haken, :) –

+0

Hallo Jimaco, ich benutze sendAsync, aber immer noch Probleme: Any Zeiger? http://stackoverflow.com/questions/36023821/how-to-pass-the-following-json-to-a-c-sharp-patch-method-w-o--w-o-jacascript-ser/36027802#36027802 –