java HttpURLConnection 请求实例

package app.works;

import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * 获取token类
 */

public class AiToken {
    /**
     * 获取权限token
     * @return 返回示例:
     * {
     * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
     * "expires_in": 2592000
     * }
     */
    
    public static void main(String[] args) {
        String auth = getAuth();
        System.out.println(auth);
    }
    public static String getAuth() {
        // 官网获取的 API Key 更新为你注册的
        String clientId = "heO94Px2341AyEhOn0lFFE0jTa2L";
        // 官网获取的 Secret Key 更新为你注册的
        String clientSecret = "AfNPCBR7Lf522afaVIBaM2eHboPa3QIRkSCm8y ";
        return getAuth(clientId, clientSecret);
    }

    /**
     * 获取API访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth(String ak, String sk) {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + ak
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + sk;
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.err.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            System.err.println("result:" + result);
            JSONObject jsonObject = new JSONObject(result);
            String access_token = jsonObject.getString("access_token");
            return access_token;
        } catch (Exception e) {
            System.err.printf("获取token失败!");
            e.printStackTrace(System.err);
        }
        return null;
    }

}

 

转载于:https://www.cnblogs.com/znsongshu/p/10177301.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,你可以使用以下几种方式来请求外部接口: 1. 使用 `java.net` 包中的类,如 `URL` 和 `HttpURLConnection`。你可以使用这些类来发送 HTTP 请求并获取响应。 2. 使用第三方库,如 Apache HttpClient、OkHttp 或 Retrofit。这些库都可以帮助你简化请求外部接口的流程,并提供了更丰富的功能。 下面是使用 `java.net` 包的示例代码: ``` URL url = new URL("http://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); // 读取响应内容 } else { // 处理错误 } ``` 如果你使用的是第三方库,可能会有所不同,但大体流程是类似的。 ### 回答2: 在Java请求外部接口可以使用Java提供的相关库和工具来实现。主要有以下几种方式: 1. 使用HttpURLConnection类:Java提供了HttpURLConnection类来发送HTTP请求,可以通过该类发送GET、POST等请求,获取接口返回的数据。可以使用该类来建立连接、设置请求方法、添加请求头、发送请求、获取响应等。 2. 使用HttpClient类:HttpClient是Apache提供的一个开源工具包,用于发送HTTP请求。可以使用该工具包发送GET、POST等请求,设置请求参数、请求头等,并获取接口返回的数据。 3. 使用第三方库OkHttp:OkHttp是Square公司开发的一个优秀的HTTP客户端库。它简化了与网站的通信过程,提供了易于使用的API来处理HTTP请求和响应。可以使用OkHttp发送GET、POST等请求,设置请求参数、请求头等,并获取接口返回的数据。 4. 使用RestTemplate类:RestTemplate是Spring框架中提供的一个用于访问Rest服务的模板类,它封装了HTTP请求的处理逻辑。可以使用RestTemplate发送GET、POST等请求,并通过设置请求参数、请求头等来访问外部接口。 以上是几种常见的在Java请求外部接口的方式。根据项目的需求和开发的场景,可以选择合适的方式来实现数据的请求和处理。 ### 回答3: Java请求外部接口的方式有多种。其中比较常见的方式是使用Java的网络编程库来发送HTTP请求。 首先,需要引入Java的网络编程相关的库,如Java自带的URLConnection类或者第三方库如HttpClient等。 然后,可以使用以下步骤来请求外部接口: 1. 构建URL对象:使用接口的URL地址创建一个URL对象。 2. 打开连接:通过URL对象的openConnection方法打开一个连接对象,得到URLConnection实例。 3. 设置请求属性:如果需要,可以设置一些请求头信息,如User-Agent、请求方法、超时时间等。 4. 发送请求:通过调用URLConnection对象的connect()方法发送请求。 5. 获取响应:可以通过getResponseCode()方法获取响应的状态码,通过getInputStream()方法获取响应的输入流,从而获取返回的数据。 6. 处理响应:根据接口的返回格式进行解析和处理,可以使用Java内置的JSON库或第三方库让数据解析更加方便。 7. 关闭连接:最后,一定要关闭连接,可以通过调用URLConnection对象的disconnect()方法来关闭连接。 总之,使用Java请求外部接口需要通过网络编程库构建URL对象,设置请求方式和请求头,发送请求并获取响应,最后对响应进行处理和关闭连接。具体的实现和处理方式会根据接口的具体要求和返回格式而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值