java调用第三方接口的三种方式+接口需要登录验证问题的解决

HttpClient

	public void httpClientTest(){
		//创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建get请求
        //HttpGet httpGet = new HttpGet("请求第三方接口的url,如:http://127.0.0.1:8082/test/find");
        HttpGet httpGet = new HttpGet("http://localhost:18083/api/v4/clients");
        
        //设置请求头  比如一些需要登录验证的接口,就需要设置请求头和请求头的值  "username:password"登陆验证的密码
        String encoding = DatatypeConverter.printBase64Binary("username:password".getBytes("UTF-8"));
        httpGet.setHeader("Authorization", "Basic " + encoding);
        
        //执行
        HttpResponse response = httpClient.execute(httpGet);
        //获取状态码
        int responseCode = response.getStatusLine().getStatusCode();

        if (responseCode == 200) {
            //获取请求体
            HttpEntity entity = response.getEntity();
            //获取请求体的内容
            entity.getContent();
            //通过流的方式进行读取
            InputStream input = entity.getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(input));
            String str1 = br.readLine();
            //获取到返回的json字符串
            String result = new String(str1.getBytes("gbk"), "utf-8");
            br.close();
            input.close();
        }
	}

HttpURLConnection

	public void httpURLConnectionTest(){
		HttpURLConnection conn = null;
        String urlStr = "请求第三方接口的url,如:http://127.0.0.1:8082/test/find";
        URL url = null;
        try {
            //创建url地址
            url = new URL(urlStr);
            //打开连接
            conn = (HttpURLConnection) url.openConnection();
            //设置请求方式
            conn.setRequestMethod("GET");

            //设置请求头  比如一些需要登录验证的接口,就需要设置请求头和请求头的值  "username:password"登陆验证的密码
            String encodings = Base64.getEncoder().encodeToString(("username:password").getBytes("utf-8"));
            conn.setRequestProperty("Authorization", "Basic " + encodings);

            //建立连接,执行
            conn.connect();

            //流的方式进行读取
            InputStream inputStream = conn.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            //得到返回的json字符串
            String s = bufferedReader.readLine();
            System.out.println(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        conn.disconnect();
 	}

推荐 : hutool工具类HttpRequest

使用hutool之前maven导包

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-http</artifactId>
	<version>5.5.1</version>
</dependency>
	public void hutoolTest(){
		String value = "Basic " + Base64.encode( "username:password","GBK" );
        //使用hutool的HttpRequest直接返回json,就不需要一些流的操作,以及流关闭的一下繁琐操作
        String resultStr = HttpRequest.get("请求第三方接口的url,如:http://127.0.0.1:8082/test/find")
                .header("Authorization", value)
                .execute()
                .body();
	}

总结

推荐使用hutool工具类HttpRequest,封装好了,使用起来简单。

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java调用第三方接口需要使用HTTP请求发送数据,并解析接收到的响应数据。以下是一个简单的Java程序示例,演示如何调用第三方接口: ```java import java.net.*; import java.io.*; public class HttpDemo { public static void main(String[] args) { try { URL url = new URL("https://api.example.com/users"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "Bearer your_token_here"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` 在这个示例中,我们使用Java的URL和HttpURLConnection类创建了一个HTTP GET请求,并发送到一个名为“https://api.example.com/users”的URL。我们还设置了请求头信息,包括Content-Type和Authorization,以便向第三方接口传递必要的参数和验证信息。 一旦我们发送请求,我们使用BufferedReader类读取响应,并将其添加到StringBuffer中。最后,我们打印出响应的字符串表示形式。 当然,这只是一个简单的示例。在实际应用中,您可能需要处理更复杂的请求和响应,并更仔细地处理可能的错误和异常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值