I'm trying to make an HTTP PATCH request via java code to TFS REST API. But I'm getting the 400 bad request code. My POST and GET methods are working from java.
I have the following code:
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:
Response Message: Bad Request
Response code: 400
line output:
{
"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"
}
There is something wrong in my code?
I test the code snippet you posted above. The content type is not correct. Change it to:
connection.setRequestProperty("Content-Type", "application/json-patch+json");
It doesn't need {}
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.