2016-05-25 30 views
1

我試圖通過Jira Rest Api從JIRA獲取問題。當我使用捲曲時,這沒有問題,我得到了我想要的問題。問題是我想通過Java代碼來做到這一點(我使用Maven更改插件,只做了一些小的修改),但插件沒有找到問題。我得到200個狀態響應,但是響應不包含任何問題。WebClient - Jira rest api,出乎意料的結果

下面是從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 -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()); 

這裏是一樣的。相應的捲曲給了我預期的結果(一個問題),但是這返回200響應,但沒有問題。

我似乎無法找出問題所在。任何指針?另外,是否有可能確切地查看客戶端發送請求的路徑(以確保我的設置沒有任何問題)?我已經閱讀了API,但沒有發現任何內容。

回答

1

是您用來發送REST呼叫的Apache CXF?

一般來說,如果你發現你們之間嘗試手動什麼,你的代碼做什麼,它有助於啓用日誌記錄,這樣你可以比較你的代碼是否真的做同樣的事(可能不是)的差異。

對於Apache CXF,如何啓用日誌記錄在此說明:

即使不馬上幫你,它可以添加這些日誌有用在這裏您的問題,使其他人更容易發現問題。