2017-05-23 3 views
0

J'essaie de faire une requête HTTP PATCH via le code java vers l'API TFS REST. Mais je reçois le code de demande 400 mauvais. Mes méthodes POST et GET fonctionnent à partir de Java.Demande HTTP PATCH à l'API TEST REST de l'application Java obtenant une erreur 400 (mauvaise requête)

je le code suivant:

public static void patchCenas() throws MalformedURLException, IOException{ 
    URL url = new URL("http://servername:8080/tfs/DefaultCollection/Testing%20Project/_apis/wit/workitems/$Bug?api-version=1.0"); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.setConnectTimeout(15000);//15 secs 
    connection.setReadTimeout(15000);//15 secs 

    connection.setRequestProperty("X-HTTP-Method-Override", "PATCH"); 
    connection.setRequestMethod("POST"); 
    connection.setDoOutput(true); 
    connection.setRequestProperty("Content-Type", "{\"Content-Type\":\"application/json-patch+json\"}"); 

    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
    out.write(
      "[" + 
        "{"+ 
         "\"op\":\"add\"," + 
         "\"path\":\"/fields/System.Title\"," + 
         "\"value\":\"Bug with PATCH via java (Test)\""+ 
        "}"+ 
      "]"); 
    out.flush(); 
    out.close(); 

    int res = connection.getResponseCode(); 
    System.out.println(connection.getResponseMessage()); 
    System.out.println(res); 

    BufferedReader br = new BufferedReader(new InputStreamReader(((HttpURLConnection) url.openConnection()).getInputStream(), Charset.forName("UTF-8"))); 
    //InputStream is = connection.getInputStream(); 
    //BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
    String line = null; 
    while((line = br.readLine()) != null) { 
     System.out.println(line); 
    } 
    connection.disconnect(); 
} 

Messages:

Message de réponse: Bad Request

Code de réponse: 400

Sortie ligne

:

{ 
    "fields": { 
     "System.WorkItemType": "Bug", 
     "System.AreaPath": "Testing Project", 
     "System.TeamProject": "Testing Project", 
     "System.IterationPath": "Testing Project", 
     "System.State": "New", 
     "System.Reason": "New defect reported", 
     "Microsoft.VSTS.Common.StateChangeDate": "1753-01-01T00:00:00Z", 
     "System.ChangedBy": "name>", 
     "System.CreatedBy": "name>", 
     "Microsoft.VSTS.Common.Priority": 2, 
     "Microsoft.VSTS.Common.Severity": "3 - Medium", 
     "Microsoft.VSTS.Common.ValueArea": "Business" 
    }, 
    "_links": { 
     "workItemType": { 
     "href": "http://servername:8080/tfs/DefaultCollection/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/_apis/wit/workItemTypes/Bug" 
     }, 
     "fields": { 
     "href": "http://servername:8080/tfs/DefaultCollection/_apis/wit/fields" 
     } 
    }, 
    "url": "http://servername:8080/tfs/DefaultCollection/_apis/wit/workItems" 
} 

Quelque chose ne va pas dans mon code?

Répondre

0

Je teste l'extrait de code que vous avez posté ci-dessus. Le type de contenu n'est pas correct. Changer à:

connection.setRequestProperty("Content-Type", "application/json-patch+json"); 

Il n'a pas besoin {}.

+0

Travailler! Je vous remercie! – Bruno