首页 > 解决方案 > 通过 Java 创建 HTTP GET 请求时遇到问题

问题描述

目前我正在尝试创建一个 HTTP GET 请求,分配多个参数,然后从 GET 请求中读取纯文本文件输出。我目前正在尝试使用的是提供 Java 的 HTTPClient 库,我将在下面附上相关代码以及我遇到的当前错误。

代码

错误

“announceURL”是我试图将请求发送到的 url。下面我将添加一个我正在尝试实现的示例。

网址示例

谢谢!

标签: javahttpnetworkingbackend

解决方案


你有没有考虑过使用 Apache HttpClient?下面附加的代码片段似乎适用于您提到的端点。希望这可以帮助。

PS:您必须将此库作为 Maven 依赖项添加到您的 pom.xml 中。链接在这里。

import org.apache.commons.io.IOUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;

public class API {
    public static void main(String[] args) throws IOException, URISyntaxException {
        HttpGet request = new HttpGet("http://mirror.rackspace.com/archlinux/iso/2019.12.01");
        URI uri = new URIBuilder(request.getURI())
                .setParameter("info_hash", "foo")
                .setParameter("peer_id", "bar")
                .build();
        request.setURI(uri);
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = httpClient.execute(request);
        InputStream input = response.getEntity().getContent();
        String content = IOUtils.toString(input);
        System.out.println(content);
    }
}

回复:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /archlinux/iso/2019.12.01</title>
 </head>
 <body>
<h1>Index of /archlinux/iso/2019.12.01</h1>
<ul><li><a href="/archlinux/iso/"> Parent Directory</a></li>
<li><a href="arch/"> arch/</a></li>
<li><a href="archlinux-2019.12.01-x86_64.iso"> archlinux-2019.12.01-x86_64.iso</a></li>
<li><a href="archlinux-2019.12.01-x86_64.iso.sig"> archlinux-2019.12.01-x86_64.iso.sig</a></li>
<li><a href="archlinux-2019.12.01-x86_64.iso.torrent"> archlinux-2019.12.01-x86_64.iso.torrent</a></li>
<li><a href="archlinux-bootstrap-2019.12.01-x86_64.tar.gz"> archlinux-bootstrap-2019.12.01-x86_64.tar.gz</a></li>
<li><a href="archlinux-bootstrap-2019.12.01-x86_64.tar.gz.sig"> archlinux-bootstrap-2019.12.01-x86_64.tar.gz.sig</a></li>
<li><a href="md5sums.txt"> md5sums.txt</a></li>
<li><a href="sha1sums.txt"> sha1sums.txt</a></li>
</ul>
Rackers - More on this mirror here: https://rax.io/mirrorfaq
</body></html>

推荐阅读