码迷,mamicode.com
首页 > 编程语言 > 详细

java实现HTTP Basic认证

时间:2018-09-26 14:21:11      阅读:974      评论:0      收藏:0      [点我收藏+]

标签:line   response   http   java   doget   通过   cat   ==   while   

这两天一直在调试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认证

标签:line   response   http   java   doget   通过   cat   ==   while   

原文地址:https://www.cnblogs.com/zhangyongJava/p/9706527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!