您好,所以我试图使用GET方法从REST API获取URL形式的json对象,所以当我发送普通URL时:
https://hostname/fil/rest/api/2/search?jql=project= "Station Server" AND status != Done AND assignee = "User New" ORDER BY priority DESC&maxResults=2
让我们说它返回一个带有2个元素的json对象
这给了我想要的结果,但是当我对其进行编码以便可以在Java代码中使用它时,它给了我另一个结果,它给了一个JSON对象,里面包含25000个元素
这是编码的URL:
https://hostname/fil/rest/api/2/search?jql%3Dproject%3D%20%22Station%20Server%22%20AND%20status%20%21%3D%20Done%20AND%20assignee%20%3D%20%22User%20New%22%20ORDER%20BY%20priority%20DESC%26maxResults%3D2
我在Java代码和google rest API中对其进行了测试,得出的结果相同:
String url2 = "https://jira/jira/rest/api/2/search?";
String toencode = "jql=project= \"Station server\" AND status != Done AND assignee = \"User New\" ORDER BY priority DESC&maxResults=2";
String url3 = URLEncoder.encode(toencode,"UTF-8").replaceAll("\\+", "%20");
String url = url2 + url3;
之后,我使用url发送get请求 请问我做错了什么?
答案 0 :(得分:1)
我认为您的问题是您在jql之后编码了'='。
该特定的'='必须是URL的一部分,因此服务器将其正确解释为查询参数。通过对其进行编码,您基本上发送了所有结果的请求,因为服务器将其解释为没有jql查询的搜索。