java請求登入介面程式碼示例
阿新 • • 發佈:2021-10-29
前言
近期研究如何利用java程式碼如何獲取其他系統中所需的資料,自己總結的方法如下:
1.工具類程式碼
/** * <pre> * 方法體說明:向遠端介面發起請求,返回字串型別結果 * @param url 介面地址 * @param requestMethod 請求型別 * @param params 傳遞引數 * @return String 返回結果 * </pre> */ public static String httpRequestToString(String url, String requestMethod, Map<String, String> params, String ...auth){ //介面返回結果 String requestResult = null; try { String parameters = ""; boolean hasParams = false; //將引數集合拼接成特定格式,如name=zhangsan&age=24 for(String key : params.keySet()){ String value = URLEncoder.encode(params.get(key), "UTF-8"); parameters += key +"="+ value +"&"; hasParams = true; } if(hasParams){ parameters = parameters.substring(0, parameters.length()-1); } //是否為GET方式請求 boolean isGet = "get".equalsIgnoreCase(requestMethod); boolean isPost = "post".equalsIgnoreCase(requestMethod); boolean isPut = "put".equalsIgnoreCase(requestMethod); boolean isDelete = "delete".equalsIgnoreCase(requestMethod); //建立HttpClient連線物件 DefaultHttpClient client = new DefaultHttpClient(); HttpRequestBase method = null; if(isGet){ url += "?" + parameters; method = new HttpGet(url); }else if(isPost){ method = new HttpPost(url); HttpPost postMethod = (HttpPost) method; StringEntity entity = new StringEntity(parameters); postMethod.setEntity(entity); }else if(isPut){ method = new HttpPut(url); HttpPut putMethod = (HttpPut) method; StringEntity entity = new StringEntity(parameters); putMethod.setEntity(entity); }else if(isDelete){ url += "?" + parameters; method = new HttpDelete(url); } method.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000); //設定引數內容型別 method.addHeader("Content-Type","application/x-www-form-urlencoded"); //httpClient本地上下文 HttpClientContext context = null; if(!(auth==null || auth.length==0)){ String username = auth[0]; String password = auth[1]; UsernamePasswordCredentials credt = new UsernamePasswordCredentials(username,password); //憑據提供器 CredentialsProvider provider = new BasicCredentialsProvider(); //憑據的匹配範圍 provider.setCredentials(AuthScope.ANY, credt); context = HttpClientContext.create(); context.setCredentialsProvider(provider); } //訪問介面,返回狀態碼 HttpResponse response = client.execute(method, context); //返回狀態碼200,則訪問介面成功 if(response.getStatusLine().getStatusCode()==200){ requestResult = EntityUtils.toString(response.getEntity()); } client.close(); }catch (UnsupportedEncodingException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return requestResult; }
2.測試程式碼
public static void main(String[] args) { //url中獲取的登入的介面 String url ="https://●●●●●●●●●●●●/login/validate.do"; Map<String, String> params = new HashMap<>(); // 使用者名稱 params.put("username","LZZHXF"); // 密碼 params.put("password","●●●●●●●"); // 是否記住密碼 params.put("isRemenber","true"); // 根據使用者名稱、密碼呼叫登入介面返回token String string = httpRequestToString(url, "post", params); System.out.println(string); }
返回如下圖所示: