0

我想使用HttpPost请求调用 Hudson Rest api 来复制作业。以下是我写的代码:

public void copy(String hudsonBaseURL, String originJobName, String newJobName) throws Exception {
    HttpPost post = new HttpPost(hudsonBaseURL + "/createItem");

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("name", newJobName));
    urlParameters.add(new BasicNameValuePair("mode", "copy"));
    urlParameters.add(new BasicNameValuePair("from", originJobName));

    post.setHeader("Content-type", "text/plain");
    post.setEntity(new UrlEncodedFormEntity(urlParameters));

    System.out.println(post.getEntity().getContent());
    try {
      HttpResponse response = httpClient.execute(post);
      System.out.println("Response Code : " + response.getStatusLine().getStatusCode());


    } finally {
      post.releaseConnection();
    }
  }

但上面的代码返回 404 错误代码并说它无法找到参数。

我使用此链接:http ://blog.zenika.com/index.php?post/2009/02/22/Remote-access-API-et-Hudson来编写我的代码,但唯一的区别是,我使用的是HttpPost而不是Post这是一个旧的api。

这里有什么想法吗?

编辑:

阻止内容类型行并开始工作,但不知道为什么

post.setHeader("Content-type", "text/plain");
4

1 回答 1

0

您的服务器期待一个非类型的响应text/plain,例如 - application/json。标Content-type头描述了服务器期望获得的数据类型。当您添加此标头时,您强制您的请求text/plain属于服务器无法处理的类型。当您删除它时,我猜(如果没有看到您的日志就无法确定)请求是以正确的格式发送的。

于 2013-09-09T05:39:40.403 回答