gpt4 book ai didi

java - 如何在查询中发送带有 "/"的 GET 请求

转载 作者:行者123 更新时间:2023-11-30 07:20:35 26 4
gpt4 key购买 nike

我正在尝试编写一个测试程序来测试我的网络服务。我正在通过 GET 方法向我的 Web 服务发送一个 JSON 对象,但它不起作用。我的测试 URL 如下所示:

http://testserver:8080/mydir/{"filename":"test.jpg", "Path":"test/2/2"}

我认为路径中的“/”给我带来了问题,因为一旦我删除它们,程序就可以正常工作。

根据 REST how to pass values containing "/" as path parameter in the URI? ,我尝试使用 java.net.URLEncoder.encode 但这没有帮助。这是我的测试程序的片段:

// some code from main method
<snip snip>
String url = "http://testserver:8080/mydir/";
String JSON = "{\"filename\":\"test.jpg\",\"Path\":\"test/2/2\"}";
String enc_JSON = URLEncoder.encode(JSON,"UTF-8");
String testGet = url + enc_JSON;
String out2 = TestCode.httpGet(testGet);
<snip snip>

// code from httpGet method
public static String httpGet(String serverURL) {
URL url;
HttpURLConnection conn;

try {
url = new URL (serverURL);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
// failing at line below
InputStream input = conn.getInputStream();
<snip snip>

我的程序的结果是我得到一个 HTTP 响应代码:400。我是不是忘记在 httpGet() 方法的代码中添加一些导致它失败的东西,或者我是否在我的 URL 中做了一些非法的事情,因为JSON 对象在路径位置的末尾加上“/”?

在此先感谢您的帮助。

最佳答案

对于 REST API,JSON 对象通常在请求正文中发送 (POST) 或返回。它们通常不会编码为 URL 的一部分。

对于 GET 请求,您可以将信息作为 url 中的段或作为查询字符串参数传递。

作为 url 中的段:

/resourcetype/{path}/{filename}
http://testserver:8080/resourcetype/test/2/2/test.jpg

作为查询字符串参数:

/resourcetype?path={path}&file={filename}
http://testserver:8080/resourcetype?path=test/2/2&filename=test.jpg

关于java - 如何在查询中发送带有 "/"的 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com