HttpClient-PostMethod-获取token

1.实现方式
   根据用户,密码,header等条件采用resful接口post方法请求获取token
2.代码
    /**
     * 根据用户名密码获取OAuth Token
     * @return
     */
    public static String getToken() {
        String json="";
        String authorization ="";
        try {
            //url
            String url = "http://127.0.0.1:8080/oauth/token";
            //data
            String username = "WTg8yJxyBiunnilJJzwFoyjH1tJE44qfHDD6zrSgaKLoZMYYubY0t8CUmfmmtbGEBjX6x0WVca60eNxSSMzSuLNzVkGUrlBHZuT2MvvgtY/T57qJNK4T9Ubi+irrBbcn0pHHSlHFrmn50DZlxqVSg83DX/UGf+lgbnWMUV9PiGE=";
            String password = "Lz7MOlyoimvaSB6aGfqQG954MO5oqi2bTVIJIGLL+FZEQeo/T1k23dqr+8Nrc9v+JsYCViRvMsyw40CbRJY14Q302VwsMreqxRWqqd5Y3f5rncoiAfWhu5XASa2Y6P3wmyUG3NG0frfw/173GT1cPBNBwZJiEtIYjHFS1saJ3tA=";
            
            NameValuePair[] data = {
                    new NameValuePair("username", username),
                    new NameValuePair("password", password) };
            //header
            Map<String,String> header =  new HashMap<String, String>();
            header.put("Content_Type", "application/x-www-form-urlencoded");
            header.put("Authorization", "Basic Q0xJRU5UOlNFQ1JFVA==");
            
            json = sendTokenPost(url,data,header);
            
            JSONObject jsonObj = JSONObject.fromObject(json);
            String success = jsonObj.getString("success");
            String accessToken = ""; 
            String tokenType ="";
            String refreshToken ="";
            String expiresIn ="";
            String scope ="";
            if("true".equals(success)){
                String entity = jsonObj.getString("entity");
                JSONObject jsonObj2 = JSONObject.fromObject(entity);
                accessToken = jsonObj2.getString("access_token");
                tokenType = jsonObj2.getString("token_type");
                refreshToken = jsonObj2.getString("refresh_token");
                expiresIn = jsonObj2.getString("expires_in");
                scope = jsonObj2.getString("scope");
                authorization = tokenType+" "+accessToken;
            }else{
                String message = jsonObj.getString("message");
                log.info("接口调用异常--->"+success+"["+message+"]");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        //System.out.println(authorization);
        return authorization;
        
    }
    /**
     * epc侧post请求获取token
     * @param url
     * @param data
     * @param header
     * @return
     */
    public static String sendTokenPost(String url,NameValuePair[] data,Map<String,String> header) {
            HttpClient client = new HttpClient();
            client.getHttpConnectionManager().getParams().setConnectionTimeout(30000);
            String result = "";
            try {
                PostMethod method = new PostMethod(url);     
                method.setRequestBody(data);
                Set<Entry<String, String>> headerSet = header.entrySet();
                for (Entry<String, String> headerEntry : headerSet) {
                    String key = headerEntry.getKey();
                    String value = headerEntry.getValue();
                    method.setRequestHeader(key, value);
                }
                if (null == url || !url.startsWith("http")) {
                    throw new Exception("请求地址格式不对");
                }

                int statusCode = 0;
                for (int i = 0; i < failCount; i++) {//失败后连续调用几次
                    try {
                        statusCode = client.executeMethod(method);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    System.out.println("sendTokenPost---statusCode---> "+statusCode);
                    if (statusCode == HttpStatus.SC_OK) { // 打印服务器返回的状态
                        log.info("接口调用成功");
                        break;
                    } else {
                        log.error("接口调用失败:" + method.getStatusLine());
                        log.info(waitTime + "秒后将第" + (i + 1) + "次重新连接接口.................");
                        Thread.sleep(waitTime);//接口调用失败后等待秒数
                    }
                }
                if (statusCode != HttpStatus.SC_OK) {
                    throw new Exception("接口调用失败");
                }
                // 返回响应消息
                byte[] responseBody = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());
                // 在返回响应消息使用编码(utf-8或gb2312)
                result = new String(responseBody, "utf-8");
                System.out.println("sendTokenPost---result---> " + result);
                // 释放连接
                method.releaseConnection();
            } catch (Exception e) {
                System. out.println( "发送 POST 请求出现异常!" + e);
                e.printStackTrace();
            }
        return result;
    }

 

猜你喜欢

转载自www.cnblogs.com/ljt-195579/p/9238997.html