java实现HTTP Basic认证
Posted 我编程我快乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现HTTP Basic认证相关的知识,希望对你有一定的参考价值。
这两天一直在调试EMQ的API,通过HTTP的GET请求,可以查询到订阅列表信息,在浏览器中测试时,需要输入用户名和密码,然后才能显示出结果,输错或者不输入会返回401错误。
通过浏览器输入用户名和密码没有问题,但是如果使用Java通过后台发送HTTP请求,在什么地方输入用户名和密码呢?
经过大量的查找资料发现,EMQ的API调用采用了Basic认证。这块怪自己知识太浅,有经验的人应该一眼就能看出来。
这里对Basic认证的原理 就不说了,网上有很多资料。
采用Basic认证时,需要在header中设置Authorization字段。代码如下:
public static String doGet(String urlStr){ try{ URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); String authString = "admin:public"; byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); String authStringEnc = new String(authEncBytes); conn.setRequestProperty("Authorization", "Basic " + authStringEnc); //设置Authoriization字段 conn.connect(); int status = conn.getResponseCode(); System.out.println(status); if(status == 200){ BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String str = ""; StringBuffer sb = new StringBuffer(); while((str=reader.readLine()) != null){ sb.append(str); } return sb.toString(); } System.out.println("请求emq服务失败"); }catch(Exception e){ e.printStackTrace(); } return "error"; }
以上是关于java实现HTTP Basic认证的主要内容,如果未能解决你的问题,请参考以下文章
HTTP基本认证(Basic Authentication)的JAVA演示样例
关于java 应用 对于apache http srever 的Authorization Basic 认证问题