java - 编码的 java 不会给出与正常 URL 相同的结果

标签 java rest api url encoding

您好,我正在尝试使用 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/

相关文章:

Java新时API在运行时编译和中断

java - JavaFX 应用程序中的 iFrame 在 Linux 上运行时不加载某些页面

php - 将 url 传递给 Flask api 端点

c# - 调用基础 REST API

rest - 使用 Markdown 创建 Jira 票证

api - Instagram API 获取新关注者通知

java - 双减运算结果

java - BufferedReader 输入到双向链表

php - 无需开发人员/api key 即可从 youtube 获取 Youtube 标题

azure - 从 Azure Function API 获取数据时出现 CORS 错误