java - HTTP 传输和 HTTP 请求

标签 java json httprequest

我正在尝试使用 HTTP 请求从 API 获取 JSON。但是,我仍然无法设置请求。这是我当前的代码

HttpTransport transport = new HttpTransport() {
    @Override
    protected LowLevelHttpRequest buildRequest(String s, String s1) throws IOException {
        return null;
    }
};

我被迫创建了一个 HTTP Transport 对象,但我不知道该放什么,文档也没有给我任何线索

@Override
public void action(String[] args, MessageReceivedEvent event) {
    HttpRequest request=new HttpRequest(transport,"GET");
    request.setUrl(url);
    request.setConnectTimeout(5000);
    try {
        request.execute();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}

url 已经包含用于授权的 Json Web Token。

但是,在初始化 HttpRequest 时,出现以下错误:

'HttpRequest(com.google.api.client.http.HttpTransport, java.lang.String)' is not public
in 'com.google.api.client.http.HttpRequest'.
Cannot be accessed from outside package

当我清除括号时甚至会出现此错误:

HttpRequest request=new HttpRequest();

有谁知道,我做错了什么?

更新:我已经修复了我的代码,但仍然出现错误:

HttpTransport transport = new ApacheHttpTransport();
    HttpRequestFactory requestFactory = transport.createRequestFactory();
    try {
        HttpRequest request = requestFactory.buildGetRequest(url);
        request.execute();
        System.out.println(request.getContent());
    }
    catch (IOException e){
        e.printStackTrace();
    }

我得到的错误是:

avax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

编辑:即使我使用下面的示例,它也会返回此错误

最佳答案

这意味着 HttpRequest 构造函数被保护调用。您必须使用 HttpRequestFactory 工厂来创建 HttpRequest 实例。

要获得 HttpRequestFactory,您必须拥有 HttpTransport,请参阅 https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.20.0/com/google/api/client/http/HttpTransport

HttpTransport transport = new ApacheHttpTransport();
HttpRequestFactory requestFactory = transport.createRequestFactory();
HttpRequest request = requestFactory.buildGetRequest(url);
HttpResponse response = request.execute();
     try {
       // process the HTTP response object
           InputStream is = response.getContent();
           try {
               // Process the input stream..
           } finally {
               is.close();
           }
     } finally {
       response.disconnect();
     }

Never tried the example hope it will work.

关于java - HTTP 传输和 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40248105/

相关文章:

javascript - 使用 Nodejs 请求模块对返回未定义进行地理编码的函数

java - Bool vals 不会在控制台中打印出来

java - HttpMessageConverter<T> 是自动转换还是需要在 Spring 中指定

java - 在java中使用GSON序列化JSON文件

python - 如何获取http请求python中的所有结果

python - PyPac PyInstaller 无法访问互联网

java - 使用pdf渲染器在java中查看整个pdf

java - 在 Java 7 下运行的 tomcat 上使用 Java 6 字节码查询 Web 应用程序

java - float 1.0E-12 F 如何转换为二进制代码?

java - 避免在 MOXy (JAXB+JSON) 中创建对象包装器类型/值