package com.dc.framework.util;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import com.dc.brisk.soa.util.DataWindow;
import com.dc.framework.component.ConfigResource;
/**
* HTTP
*/
public class HttpClientUtil {
private static final String appName = "physicalService";
private static final String backup_service = "snapshot_physical";
private static final String restore_service = "restore_physical";
private static final String ip;
private static final int port;
private static final String server_protocol;
private static final String uri;
static{
ip = ConfigResource.getConfig(ConfigResource.SERVER_IP);
port = Integer.valueOf(ConfigResource.getConfig(ConfigResource.SERVER_PORT));
server_protocol = ConfigResource.getConfig(ConfigResource.SERVER_PROTOCOL);
uri = ConfigResource.getConfig(ConfigResource.SERVER_URI);
}
public static void main(String[] args) throws HttpException, IOException
{
getRemoteHostStatus("10.1.180.178") ;
}
public static DataWindow getRemoteHostStatus(String ip){
DataWindow result = new DataWindow(DataWindow._NAME_VALUE);
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(ip,port,server_protocol);
NameValuePair[] values = new NameValuePair[2];
values[0] = new NameValuePair("AppName","EquipMon");
values[1] = new NameValuePair("Service","Usage");
HttpMethod method = getPostMethod(uri,values);
try {
client.executeMethod(method);
//
String response = new String(method.getResponseBodyAsString().getBytes("8859_1"));
method.releaseConnection();
//
result.putAttribute("status", method.getStatusCode());
/*
* {"CPU":"16.0"
,"MEM":"52.310001373291016"
,"DISK0":"58.76"
,"DISK1":"5.08"
,"DISK2":"8.05"
}
*/
String[] array = response.replace("{", "").replace("}", "").split(",");
for(int i=0;i<array.length;i++)
{
String each = array[i];
String[] key_value = each.split(":");
key_value[0] = key_value[0].replaceAll("\"", "");
key_value[1] = key_value[1].replaceAll("\"", "").replaceAll("[\r
]", "");
if("MEM".equals(key_value[0].trim()))
{
key_value[1] = key_value[1].substring(0,key_value[1].indexOf(".")+3);
}
result.putAttribute(key_value[0], key_value[1]);
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public static void printDataWindow(DataWindow data)
{
StringBuffer sb = new StringBuffer();
TransforTools.enCodeJson(data, sb);
System.out.println(sb);
}
public static String execBackup(String backName,String src_volume_list,String target_volume_list) throws HttpException, IOException{
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(ip,port,server_protocol);
// POST
NameValuePair[] values = new NameValuePair[5];
values[0] = new NameValuePair("AppName",appName);
values[1] = new NameValuePair("Service",backup_service);
values[2] = new NameValuePair("backName",backName);
values[3] = new NameValuePair("src_volume_list",src_volume_list);
values[4] = new NameValuePair("target_volume_list",target_volume_list);
HttpMethod method = getPostMethod(uri,values);
client.executeMethod(method);
//
System.out.println(method.getStatusLine()); //
String response = new String(method.getResponseBodyAsString().getBytes("8859_1"));
method.releaseConnection();
//
System.out.println(response);
return response;
}
public static String execRestore(String backName,String src_volume_list,String target_volume_list) throws HttpException, IOException{
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(ip,port,server_protocol);
// POST
NameValuePair[] values = new NameValuePair[5];
values[0] = new NameValuePair("AppName",appName);
values[1] = new NameValuePair("Service",restore_service);
values[2] = new NameValuePair("backName",backName);
values[3] = new NameValuePair("src_volume_list",src_volume_list);
values[4] = new NameValuePair("target_volume_list",target_volume_list);
HttpMethod method = getPostMethod(uri,values);
client.executeMethod(method);
//
System.out.println(method.getStatusLine()); //
String response = new String(method.getResponseBodyAsString().getBytes("8859_1"));
method.releaseConnection();
//
System.out.println(response);
return response;
}
// GET
public static HttpMethod getGetMethod() {
return new GetMethod("/simcard.php?simcard=1330227");
}
// POST
public static HttpMethod getPostMethod(String uri,NameValuePair[] parametersBody) {
PostMethod post = new PostMethod(uri);
post.setRequestBody(parametersBody);
return post;
}
}