通过azkaban的API链接azkaban服务器,并创建工作流

首先创建一个httpUtil类,方便访问网页:

  1 package com.jh.azkaban;
  2 
  3 import java.io.*;
  4 import java.net.HttpURLConnection;
  5 import java.net.MalformedURLException;
  6 import java.net.URL;
  7 import java.net.URLConnection;
  8 import java.util.HashMap;
  9 import java.util.Iterator;
 10 import java.util.Map;
 11 import java.util.Set;
 12 
 13 /**
 14  * 模拟浏览器的功能
 15  * 1.测试请求百度服务器
 16  * */
 17 public class httpUtl
 18 {
 19     public static void main(String[] args)
 20     {
 21         httpUtl httpUtl = new httpUtl();
 22         String requestUrl = "http://www.teabig.com/train-web-head/head/users/usersUpdate.htm#top";
 23         Map<String,String> heardmap = new HashMap<>();
 24         heardmap.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36");//这里添加的请求头信息是模仿浏览器真实访问的情景--浏览器怎么访问代码就这么访问
 25         Map<String,String> parammap = new HashMap<>();
 26         /*请求服务器*/
 27 //        String s = httpUtl.methodGet(requestUrl, heardmap, parammap);
 28         String s = httpUtl.methodPost(requestUrl, heardmap, parammap);                     
 29         System.out.println("响应=====》"+s);
 30     }
 31 
 32     /**
 33      *
 34      * @param requestUrl--请求网址
 35      * @param heardmap--请求头的信息:k--v
 36      * @param paramsmap--请求体的信息:k--v
 37      * @return
 38      */
 39     public  String methodGet(String requestUrl, Map<String,String> heardmap,Map<String,String> paramsmap)
 40     {
 41         System.out.println("=========ceshi========methodGet======");
 42         StringBuffer sb = new StringBuffer();
 43         try {
 44             URL url = new URL(requestUrl);
 45             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 46             /*请求头配置*/
 47             for (Map.Entry<String, String> header : heardmap.entrySet()) {
 48                 /*将传入的请求体的参数传入请求头的配置中*/
 49                 String key = header.getKey();
 50                 String value = header.getValue();
 51                 connection.setRequestProperty(key,value);//请求头的配置
 52             }
 53 
 54            /*请求头--get*/
 55             connection.setDoOutput(false);//get请求不用输出
 56             connection.setDoInput(true);
 57 
 58             /*获取输入输出流*/
 59             InputStream is = connection.getInputStream();
 60 //            OutputStream os = connection.getOutputStream();
 61             BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
 62 //            BufferedWriter Writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
 63             /*os.flush();
 64             os.close();*/
 65             /*读取信息*/
 66             String line = "";
 67             while ((line = reader.readLine()) !=null)
 68             {
 69 //                System.out.println(line);
 70                 sb.append(line+"\r\n");
 71             }
 72 
 73             reader.close();
 74         } catch (Exception e) {
 75 
 76 
 77             e.printStackTrace();
 78         }
 79 
 80         return sb.toString();
 81     }
 82     public  String methodPost(String requestUrl, Map<String,String> heardmap,Map<String,String> paramsmap)
 83     {
 84         System.out.println("=========ceshi========methodPost======");
 85         StringBuffer sb = new StringBuffer();
 86         BufferedReader reader = null;
 87         BufferedWriter Writer = null;
 88         try {
 89             URL url = new URL(requestUrl);
 90             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 91             /*请求头配置*/
 92             for (Map.Entry<String, String> header : heardmap.entrySet()) {
 93                 /*将传入的请求体的参数传入请求头的配置中*/
 94                 String key = header.getKey();
 95                 String value = header.getValue();
 96                 connection.setRequestProperty(key,value);//请求头的配置
 97             }
 98             /*获取请求体*/
 99             Iterator<Map.Entry<String, String>> iterator = paramsmap.entrySet().iterator();
100             while (iterator.hasNext())
101             {
102                 Map.Entry<String, String> next = iterator.next();
103                 String key = next.getKey() + "";
104                 String value = next.getValue() + "";
105 
106             }
107 
108             /*请求头--get*/
109             connection.setDoOutput(true);//get请求不用输出
110             connection.setDoInput(true);
111 
112             /*获取输入输出流*/
113             OutputStream os = connection.getOutputStream();
114             Writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
115 
116             StringBuffer sb1 = new StringBuffer();
117             Set<Map.Entry<String, String>> paramsSet = paramsmap.entrySet();
118             for (Map.Entry<String, String> paramsEntry : paramsSet)
119             {
120                 String key = paramsEntry.getKey();
121                 String value = paramsEntry.getValue();
122                 sb1.append(key+"="+value+"&");
123 
124             }
125 //            System.out.println("===params=>"+sb1);
126             Writer.write(sb1.toString());//将请求体发送到服务器
127 
128             Writer.flush();
129 //            Writer.close();
130             InputStream is = connection.getInputStream();
131             reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
132             /*读取信息*/
133             String line = "";
134             while ((line = reader.readLine()) !=null)
135             {
136 //                System.out.println(line);
137                 sb.append(line+"\r\n");
138             }
139 
140 //            reader.close();
141         } catch (Exception e) {
142 
143 
144             e.printStackTrace();
145         }finally {
146             try {
147                 Writer.close();
148             } catch (IOException e) {
149                 e.printStackTrace();
150             }
151             try {
152                 reader.close();
153             } catch (IOException e) {
154                 e.printStackTrace();
155             }
156         }
157 
158         return sb.toString();
159     }
160 
161 }

链接百度服务器测试是否可以链接

接下来创建一个链接azkaban的工具类:

 1 package com.jh.azkaban;
 2 
 3 
 4 import com.alibaba.fastjson.JSON;
 5 import com.alibaba.fastjson.JSONObject;
 6 import com.alibaba.fastjson.JSONPObject;
 7 
 8 import java.util.HashMap;
 9 import java.util.Map;
10 
11 public class AzkabanApi_Util
12 {
13     private String reqstr = "http://node7-2:8081";//请求网址
14     private httpUtl httpUtl = new httpUtl();
15 
16     /**
17      *
18      * @param username
19      * @param password
20      * @return
21      */
22     public JSONObject login(String username, String password)
23     {
24         Map<String,String> heardmap = new HashMap<>();
25         heardmap.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36");
26         heardmap.put("Content-Type","application/x-www-form-urlencoded");
27         Map<String,String> parammap = new HashMap<>();
28         parammap.put("action","login");
29         parammap.put("username",username);
30         parammap.put("password",password);
31         String result = httpUtl.methodPost(reqstr, heardmap, parammap);
32         JSONObject parse = (JSONObject) JSON.parse(result);
33         return parse;
34     }
35     public JSONObject create(String sessionid, String name, String description)
36     {
37         reqstr = reqstr + "/manager";
38         Map<String,String> heardmap = new HashMap<>();
39         heardmap.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36");
40         heardmap.put("Content-Type","application/x-www-form-urlencoded");
41 
42         Map<String,String> parammap = new HashMap<>();
43         parammap.put("action","create");
44         parammap.put("session.id",sessionid);
45         parammap.put("name",name);
46         parammap.put("description",description);
47 
48         String result = httpUtl.methodPost(reqstr, heardmap, parammap);
49 
50         JSONObject parse = (JSONObject) JSON.parse(result);
51         return parse;
52     }
53 }

创建main方法链接并创建工作流:

 1 package com.jh.azkaban;
 2 
 3 import com.alibaba.fastjson.JSONObject;
 4 import com.alibaba.fastjson.JSONPObject;
 5 
 6 //import com.alibaba.fastjson.JSONObject;
 7 /**
 8  * 链接azkaban的API
 9  * */
10 public class my_azkaban
11 {
12 //    private
13     public static void main(String[] args)
14     {
15         //获取azkaban对象
16         AzkabanApi_Util azkabanApi = new AzkabanApi_Util();
17         String user = "azkaban";
18         String pwd = "azkaban";
19 //先登录服务器,获取sessionId
20         JSONObject jsonObjectstr = azkabanApi.login(user, pwd);
21 //        jsonpObjectstr.getFunction("status");
22         if (jsonObjectstr != null && "success".equalsIgnoreCase(jsonObjectstr.getString("status")) )
23         {
24             String sessionid = jsonObjectstr.getString("session.id");
25             System.out.println(sessionid);
26 
27             String name = "my_flow04";
28             String describe = "my_flow04";
29 //通过获取的sessionId,链接并创建工作路流
30             JSONObject jsonObject = azkabanApi.create(sessionid, name, describe);
31             System.out.println(jsonObject);
32 
33 
34         }
35 
36     }
37 }

这样,一个简单的azkaban--API链接就搞定了!!

 

上一篇:关于JdbcUtils的路径的问题


下一篇:大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:3.外观模式在Spring框架和SLF4J中的应用