您好,我正在尝试使用 GET 方法获取 json 对象,并使用 REST API 形成 URL,因此当我发送正常 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代码中使用它时,它给了我另一个结果,它给出了一个内部包含25000个元素的json对象
这是编码后的 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 请求 请问我做错了什么?
最佳答案
我认为你的问题是你在 jql 之后编码了“=”。
该特定的“=”需要成为 URL 的一部分,以便服务器将其正确解释为查询参数。通过对其进行编码,您基本上发送了对所有结果的请求,因为服务器将其解释为没有 jql 查询的搜索。
关于java - 编码的 java 不会给出与正常 URL 相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972328/