2017-05-23 289 views
0

我試圖通過Java代碼向TFS REST API發出HTTP PATCH請求。但是我收到了400個錯誤的請求代碼。我的POST和GET方法正在使用java。從HTTP獲取400(錯誤請求)錯誤的TFS REST API的HTTP PATCH請求

我有以下代碼:

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

消息:

響應消息:錯誤的請求

響應代碼:400

線輸出:

{ 
    "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" 
} 

我的代碼有問題嗎?

回答

0

我測試你上面發佈的代碼片段。內容類型不正確。將其更改爲:

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

它不需要{}

+0

工作!謝謝! – Bruno