2017-10-09 141 views
2

我正在使用JIRA的其余API在筛选项目名称和问题类型时检索问题。带有空格的URL rest api参数

当我尝试使用API​​调用,如:

String url3 = "jiraURL/rest/api/2/search?jql=project=GB AND issuetype=Requirement&maxResults=1000"; 

它的工作原理!

但是当我尝试:

String url3 = jiraURL/rest/api/2/search?jql=project=GB AND issuetype=Product Risk&maxResults=1000"; 

HttpClientErrorException: 400。 含义我的网址错误。我认为错误在于事实上两个单词之间有一个空格是issuetype。

我已经尝试把+而不是空格,但不起作用。 我的第一个电话很完美。但我不知道如何解决第二个电话。

+0

https://stackoverflow.com/questions/10786042/java-url-encoding-of-query-string-parameters检查这个问题。 –

回答

1

每个参数的名称和值都应该用URL编码。然后应该用分隔符('&'或';')连接。纵观

...?jql=project=GB AND issuetype=Product Risk&maxResults=1000 

我不知道jqlprojectissuetype是否是独立的参数,或者如果整个字符串是jql的值。如果是前者,间隔应与它们的URL编码形式( “%20”)来代替:

...?jql=&project=GB%20AND%20issuetype=Product%20Risk&maxResults=1000 

如果是后者,在 “=” S也应该URL编码:

...?jql=project%3DGB%20AND%20issuetype%3DProduct%20Risk&maxResults=1000 
+0

查询在jql = – Urban

+0

之后开始我想你应该说'jql'参数应该是(编码形式)“project = GB AND issuetype = Product Risk”。你会想要后者。 – ericP

+0

我可悲地继续收到400错误 – Urban

1

你可以试试吗?

try { 
     String url3 = URLEncoder.encode("jiraURL/rest/api/2/search?jql=project=GB AND issuetype=Product Risk&maxResults=1000", "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    }