2016-07-14 9 views
1

Ich habe geknackt, wie man Daten mit der API zieht, aber jetzt versuche ich, ein neues Arbeitselement zu einem Projekt zu schieben, und ich kann es einfach nicht funktionieren mein C#:Wie Sie die Visual Studio Team Services-API verwenden

try { 
     using (HttpClient client = new HttpClient()) { 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(
      ASCIIEncoding.ASCII.GetBytes(
       string.Format("{0}:{1}", "", token)))); 

     string Url = $"https://XXX/DefaultCollection/{Job.Project}/_apis/wit/workitems/$Task?api-version=1.0"; 
     var method = new HttpMethod("PATCH"); 
     var request = new HttpRequestMessage(method, Url) { 
       Content = new StringContent(Job.WorkItem, Encoding.UTF8, 
          "application/json-patch+json") 
        }; 

     using (HttpResponseMessage response = client.SendAsync(request).Result) { 
         response.EnsureSuccessStatusCode(); 
         string responseBody = response.Content.ReadAsStringAsync().Result;       
        } 
       } 
      } 
      catch (Exception ex) { 
       MessageBox.Show(ex.ToString()); 
       return null; 
      } 

Hier ist Job.WorkItem wie im Debugger

"[ 
    { 
     \"op\":\"add\", 
     \"path\":\"/fields/System.Title\", 
     \"value\":\"Please add a business area for XXX Systems\\n\" 
    } 
]" 

Habe ich etwas verpasst oder etwas falsch zu machen, wie es mit

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    Pragma: no-cache 
    X-TFS-ProcessId: xxx 
    Strict-Transport-Security: max-age=31536000; includeSubDomains 
    Access-Control-Allow-Origin: * 
    Access-Control-Max-Age: 3600 
    Access-Control-Allow-Methods: OPTIONS,GET,POST,PATCH,PUT,DELETE 
    Access-Control-Expose-Headers: ActivityId,X-TFS-Session,X-MS-ContinuationToken 
    Access-Control-Allow-Headers: authorization 
    X-FRAME-OPTIONS: SAMEORIGIN 
    X-VSS-UserData: xxxx 
    ActivityId: xxxx 
    X-TFS-Session: xxx 
    X-Content-Type-Options: nosniff 
    Cache-Control: no-cache 
    Date: Wed, 13 Jul 2016 16:48:28 GMT 
    P3P: CP="CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT" 
    Server: Microsoft-IIS/8.5 
    X-AspNet-Version: 4.0.30319 
    X-Powered-By: ASP.NET 
    Content-Length: 429 
    Content-Type: application/json; charset=utf-8 
    Expires: -1 
}} 
reagiert angezeigt

Ich habe einige Details weggelassen mit xxx nur FYI

Antwort

1

Sie sollten auf REST Api documentation für bestimmte Aktionen beziehen.

Auch, wie Sie es von .net anrufen vielleicht client lib für VSO Api ist ein einfacher Weg zu gehen?

+0

Ich sehe in die Client-Bibliothek, ich benutze die API-Dokumentation und ich dachte, ich hätte alles richtig gemacht –

0

Im Job.WorkItem gibt es redundante doppelte Anführungszeichen, die eine ungültige Anforderung verursachen. Der Inhalt sollte sein:

[ 
    { 
     \"op\":\"add\", 
     \"path\":\"/fields/System.Title\", 
     \"value\":\"Please add a business area for XXX Systems\\n\" 
    } 
] 

Siehe diesen Link für Details: Create a work item.

Verwandte Themen