如何在java中构建url?

问题描述 投票:31回答:2

我正在使用StringBuilder构建一个String

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是否必要?我将尝试下面的建议。

java string http url
2个回答
70
投票

试试apache qazxsw poi:[qazxsw poi]

URIBuilder

Maven依赖:

Documentation

4
投票

由于您要创建URL并通过GET请求使用它,因此最好使用可帮助您完成此过程的库。您可以使用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(); 或其他库,如<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.1</version> </dependency> ,它构建在HttpComponents之上,可以轻松完成所有这些工作。

以下是使用Unirest的示例:

HttpComponents

这将检索与使用Unirest在youtube上搜索的所有结果相对应的HTML响应。 HttpResponse<String> stringResponse = Unirest.get("https://www.youtube.com/results") .field("search_query", "eñe") .asString(); System.out.println(stringResponse.getBody()); 字符将为您编码。

免责声明:我无论如何都不依赖于Unirest。我不是这个项目的开发者或赞助商。我只是这个框架的快乐用户。

© www.soinside.com 2019 - 2024. All rights reserved.