java - WebClient - Jira Rest api,出现意外结果

标签 java rest curl cxf jira

我正在尝试通过 Jira Rest Api 从 JIRA 获取问题。当我使用curl时,没有问题,并且我得到了我想要的问题。问题是我想通过Java代码来做到这一点(我使用maven更改插件,进行一些小的修改),但插件没有发现问题。我收到 200 状态响应,但该响应不包含任何问题。

这是 Java 代码的片段(身份验证在设置中完成):

    WebClient client = setupWebClient(jiraUrl);
    doSessionAuth(client);
    client.replacePath("/rest/api/2/search");
    client.type(MediaType.APPLICATION_JSON_TYPE);
    client.accept(MediaType.APPLICATION_JSON_TYPE);
    client.query("key", "<Issue-key>");
    Response res = client.get(); 

这给了我一个带有这个 JSON 的 200 响应:

{"startAt":0,"maxResults":50,"total":0,"issues":[]}

这是我的curl请求,它给了我预期的结果:

curl -u user:password -X GET -H "Content-Type:application/json" https://bankid.atlassian.net/rest/api/2/search?key=<Issue-key>&maxResults=10

我还尝试过使用 POST 和 JSON 查询:

WebClient client = setupWebClient(jiraUrl);
doSessionAuth(client);

String jqlQuery = new    JqlQueryBuilder(log).urlEncode(false).filter(filter).build();

StringWriter searchParamStringWriter = new StringWriter()
JsonGenerator gen = jsonFactory.createGenerator(searchParamStringWriter);
gen.writeStartObject();
gen.writeStringField("jql", jqlQuery);
gen.writeNumberField("maxResults", nbEntriesMax);
gen.writeArrayFieldStart("fields");
gen.writeString("*all");
gen.writeEndArray();
gen.writeEndObject();
gen.close();
client.replacePath("/rest/api/2/search");
client.type(MediaType.APPLICATION_JSON_TYPE);
client.accept(MediaType.APPLICATION_JSON_TYPE);
log.debug("JQL query [" + searchParamStringWriter.toString() + "]");
Response searchResponse = client.post(searchParamStringWriter.toString());

这里也是一样的。相应的curl给了我预期的结果(一个问题),但这返回了200响应但没有问题。

我似乎无法找出问题所在。有什么指点吗?另外,是否可以准确查看客户端将请求发送到的路径(以确保我的设置没有任何问题)?我已经阅读了 API 但没有找到任何东西。

最佳答案

您使用的是 Apache CXF 来发送 REST 调用吗?

一般来说,如果您发现手动尝试的操作与代码执行的操作之间存在差异,则启用日志记录会有所帮助,这样您就可以比较您的代码是否确实执行了相同的操作(可能不是)。

对于 Apache CXF,如何启用日志记录如下所述:

即使这不能立即帮助您,将这些日志添加到您的问题中也很有用,可以让其他人更轻松地发现问题。

关于java - WebClient - Jira Rest api,出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37429109/

相关文章:

javascript - 在基于 REST 的 Web 应用程序中保留继承的概念

java - 如何为Hibernate的Query对象设置通用参数?

java - 如何在unix环境下使用log4j2文件追加器功能

java - 程序 'mvn'可以在以下包:中找到

java - 如何使用 Jersey 和 Dropwizard 重定向用户并将消息传递到目标页面?

linux - curl: (56) 从对端接收数据时失败

java - 最简单的扑克手评估算法

c# - ASP.net WebApi 新注册的路由显示,该请求无效

iphone - 如何格式化 POST 以使用基本 HTTP 身份验证和 Devise Rails Gem 创建用户

php - Paypal IPN curl 问题