package test;
//这些事导入的一些包,需要引用一些jar才行
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class HttpTest {
// 获取带有参数的json串
public static String getHttpResult(String url, String parm) {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url + parm);
String json = null;
try {
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
json = EntityUtils.toString(entity, "UTF-8").trim();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpget.abort();
}
return json;
}
/* 获取没有参数的json串
public static String getHttpResult(String url) {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
String json = null;
try {
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
json = EntityUtils.toString(entity, "UTF-8").trim();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpget.abort();
}
return json;
}
*/
//此方法用来获取某个交换机的流表信息
public static void ParseJson(String url,String switchid,String jsonString) {
JSONObject jsonobj = JSONObject.fromObject(jsonString); // 将json字符串转换成jsonObject对象
JSONArray flowsOfSwitch=jsonobj.getJSONArray(switchid);//把交换机parm号的流表信息转换成Json数组
System.out.println("交换机"+switchid+"的流表信息如下:");
for (int i = 0; i < flowsOfSwitch.size(); i++) {//依次取出1号交换机的每一个流表
int j=i+1;
System.out.println("第"+j+"条流表:");
System.out.println("actions:");
System.out.println("actions:"+flowsOfSwitch.getJSONObject(0).getJSONArray("actions").get(0));
System.out.println("idle_timeout:"+flowsOfSwitch.getJSONObject(0).get("idle_timeout"));
System.out.println("cookie:"+flowsOfSwitch.getJSONObject(0).get("cookie"));
System.out.println("packet_count:"+flowsOfSwitch.getJSONObject(0).get("packet_count"));
System.out.println("hard_timeout:"+flowsOfSwitch.getJSONObject(0).get("hard_timeout"));
System.out.println("byte_count:"+flowsOfSwitch.getJSONObject(0).get("byte_count"));
System.out.println("duration_sec:"+flowsOfSwitch.getJSONObject(0).get("duration_sec"));
System.out.println("duration_nsec:"+flowsOfSwitch.getJSONObject(0).get("duration_nsec"));
System.out.println("priority:"+flowsOfSwitch.getJSONObject(0).get("priority"));
System.out.println("length:"+flowsOfSwitch.getJSONObject(0).get("length"));
System.out.println("flags:"+flowsOfSwitch.getJSONObject(0).get("flags"));
System.out.println("table_id:"+flowsOfSwitch.getJSONObject(0).get("table_id"));
System.out.println("match:");
System.out.println("dl_dst:"+flowsOfSwitch.getJSONObject(0).getJSONObject("match").get("dl_dst"));
System.out.println("dl_src:"+flowsOfSwitch.getJSONObject(0).getJSONObject("match").get("dl_src"));
System.out.println("in_port:"+flowsOfSwitch.getJSONObject(0).getJSONObject("match").get("in_port"));
}
}
/*
* 依次取出JSONArray中的值 private static void getJsonArrayItem(JSONArray array) { for
* (int i=0; i<array.size(); i++) { System.out.println(array.get(i)); } }
*/
public static void main(String args[]) {
/* 获取网络拓扑中的所有交换机,第一次返回的是json串,第二次返回的是解析后的数组
String url = "http://192.168.177.129:8080/stats/switches";
String result = getHttpResult(url);
JSONArray jsonarray = JSONArray.fromObject(result);
System.out.println("未经加工的json数组:" + jsonarray);// 返回或取得数据,也就是json串
for (int i = 0; i < jsonarray.size(); i++) {
System.out.println("解析出来的json数组中的元素:" + jsonarray.get(i));// 返回解析好的json内的数据,其实获得的是一个数组,get(index)就是获取数组中的第几位
}
*/
/* 获取1号交换机的所有流表信息
String parm = "1";
String url1 = "http://192.168.177.130:8080/stats/flow/";
String jsonString = getHttpResult(url1, parm);
System.out.println("未经解析的交换机1的流表信息:" + jsonString);
*/
String switchid1 = "1";
String url1 = "http://192.168.177.130:8080/stats/flow/";
String jsonString1 = getHttpResult(url1, switchid1);
ParseJson(url1,switchid1,jsonString1);
}
}
解析在网站获取的JSON数据串,获取交换机的流表信息并解析出来
最新推荐文章于 2023-02-11 15:54:09 发布