如何在java中构建url?
我正在使用StringBuilder构建一个String
StringBuilder builder = new StringBuilder(); builder.append("my parameters"); builder.append("other parameters");
然后我建立一个url
Url url = new Url(builder.toString());
然后我尝试连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
但是从我得到的结果来看,url似乎并不正确。 这就像某些参数被错误传递。 这就是为什么我认为问题出在StringBuilder的一部分。
问题在于我尝试传递的双参数。
double longitude = 23.433114; String lng = String.ValueOf(longitude);
然后我把它放在url中。 但如果我把它作为字符串给出,结果是正确的。
String lng = "23.433114"
UrlEncoding是否必要? 我将尝试下面的建议。
试试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依赖:
org.apache.httpcomponents httpclient 4.5.1
由于您要创建URL并通过GET请求使用它,因此最好使用可帮助您完成此过程的库。 您可以使用HttpComponents或其他库,如Unirest ,它构建在HttpComponents之上,可以简化所有这些工作。
以下是使用Unirest的示例:
HttpResponse stringResponse = Unirest.get("https://www.youtube.com/results") .field("search_query", "eñe") .asString(); System.out.println(stringResponse.getBody());
这将使用"eñe"
检索与youtube上搜索的所有结果相对应的HTML响应。 ñ
字符将为您编码。
免责声明:我不同意任何Unirest。 我不是这个项目的开发者或赞助商。 我只是这个框架的快乐用户。