繁体   English   中英

从Java应用程序到TFS REST API的HTTP PATCH请求收到400(错误请求)错误

[英]HTTP PATCH request to TFS REST API from java application getting 400 (bad request) error

我正在尝试通过Java代码向TFS REST API发出HTTP PATCH请求。 但是我得到了400个错误的请求代码。 我的POST和GET方法从Java运行。

我有以下代码:

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

我的代码有问题吗?

我测试了您上面发布的代码段。 内容类型不正确。 更改为:

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

它不需要{}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM