如何在java中构建url?

新手上路,请多包涵

我正在使用 StringBuilder 构建一个字符串

StringBuilder builder = new StringBuilder();
builder.append("my parameters");
builder.append("other parameters");

然后我建立一个网址

Url url = new Url(builder.toString());

然后我尝试连接

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

但是从我得到的结果来看,这个网址似乎不对。就像某些参数被错误传递一样。这就是为什么我认为问题出在 StringBuilder 的部分。

问题出在我尝试传递的双参数中。

 double longitude = 23.433114;
String lng = String.ValueOf(longitude);

然后我把它放在网址中。但是如果我把它作为一个字符串给出,结果是正确的。

 String lng = "23.433114"

UrlEncoding 是必需的吗?我将尝试下面的建议。

原文由 Manolis Karamanis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

试试 apache 的 URIBuilder :[ 文档]

 import org.apache.http.client.utils.URIBuilder;

// ...

URIBuilder b = new URIBuilder("http://example.com");
b.addParameter("t", "search");
b.addParameter("q", "apples");

Url url = b.build().toUrl();

Maven 依赖项:

 <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.1</version>
</dependency>

原文由 jhkuperus 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于您想要创建 URL 并通过 GET 请求使用它,因此最好使用一个可以在此过程中为您提供帮助的库。您可以使用 HttpComponents 或其他构建在 HttpComponents 之上的库,例如 Unirest ,从而简化所有这些工作。

下面是一个使用 Unirest 的例子:

 HttpResponse<String> stringResponse = Unirest.get("https://www.youtube.com/results")
    .field("search_query", "eñe")
    .asString();
System.out.println(stringResponse.getBody());

这将检索与使用 "eñe" 在 youtube 上搜索的所有结果对应的 HTML 响应。 ñ 字符将为您编码。

免责声明:我不以任何方式依附于 Unirest。我不是这个项目的开发者或赞助商。我只是这个框架的快乐用户。

原文由 Luiggi Mendoza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题