http代替ajax获取数据
来源:互联网 发布:网络诈骗警察不管 编辑:程序博客网 时间:2024/06/06 06:50
/**
*
*/
package com.certus.util.httpClient;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.UUID;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.log4j.Logger;
import com.certus.util.CommonUtil;
/**
* @description 通过HttpClient Post请求服务器数据的Request
* @author renjing
* @time 2015年2月10日上午10:15:37
*/
public class HttpClientPostRequest extends AbstractHttpClientRequest {
private Logger logger = Logger.getLogger(HttpClientPostRequest.class);
public HttpClientPostRequest(String url) {
super(url);
}
/*@Override
public HttpMethod getHttpMethod() {
NameValuePair[] pairs = new NameValuePair[this.params.size()];
NameValuePair pair = null;
String contentType = "multipart/form-data";
int i = 0;
for (Entry<String, Object> entry : params.entrySet()) {
pair = new NameValuePair(entry.getKey(), String.valueOf(entry
.getValue()));
pairs[i++] = pair;
}
PostMethod httpMethod = new PostMethod(this.url);
httpMethod.setRequestBody(pairs);
if (StringUtils.isNotEmpty(contentType))
httpMethod.setRequestHeader("Content-Type", contentType);
return httpMethod;
}*/
@Override
public HttpMethod getHttpMethod() {
/* NameValuePair[] pairs = new NameValuePair[this.params.size()];
NameValuePair pair = null;
String contentType = "";
int i = 0;
for (Entry<String, Object> entry : params.entrySet()) {
pair = new NameValuePair(entry.getKey(), String.valueOf(entry.getValue()));
pairs[i++] = pair;
}
PostMethod httpMethod = new PostMethod(this.url);
httpMethod.setRequestBody(pairs);
if (StringUtils.isNotEmpty(contentType))
httpMethod.setRequestHeader("Content-Type", contentType);
return httpMethod;*/
return null;
}
public String processPost(InputStream input, String tempName, String userId, String token) throws HttpClientException {
String result = httpSendPIC(url, tempName, file2byte(input), userId, token);
return result;
}
/**
*
* @Title 函数名称:processPostEntity
* @Description 功能描述:创建实例 需要post一个 entity的json(String)格式
* @param 参 数:
* @return 返 回 值:String
* @throws
*/
@SuppressWarnings({ "resource", "deprecation" })
public String processPostEntity(String entityJson) {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
// 添加参数
method.setEntity(new StringEntity(entityJson, HTTP.UTF_8));
method.setHeader("X-Auth-Token", token);
method.setHeader("Content-Type", "application/Json");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
/**
*
* @Title 函数名称: processPostEntity
* @Description 功能描述: 创建实例 需要post一个 entity的json(String)格式
* @param 参 数:
* @return 返 回 值: String
* @throws
*/
@SuppressWarnings({ "resource", "deprecation" })
public String processPostEntity(String entityJson, boolean isPostInfo) {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
// 添加参数
method.setEntity(new StringEntity(entityJson, HTTP.UTF_8));
method.setHeader("X-Auth-Token", token);
// 记录日志需要的参数
if (isPostInfo) {
method.setHeader("Event-Id", UUID.randomUUID().toString());
method.setHeader("User-Id", CommonUtil.getUserId());
}
method.setHeader("Content-Type", "application/Json");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
@SuppressWarnings({ "resource", "deprecation" })
public String processPostParam() {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
method.setHeader("X-Auth-Token", token);
method.setHeader("Content-Type", "text/plain");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
public String httpSendPIC(String url, String tplName, byte[] PostData, String userId, String token) {
StringBuffer result = new StringBuffer();
URL u = null;
HttpURLConnection con = null;
// 尝试发送请求
try {
u = new URL(url + "?nsdName=" + URLEncoder.encode(tplName, "UTF-8"));
u = new URL(url + "?nsdName=" + tplName);
// u = new URL(url);
con = (HttpURLConnection) u.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "multipart/form-data");
con.setRequestProperty("X-Auth-Token", token);
con.setRequestProperty("Event-Id", UUID.randomUUID().toString());
con.setRequestProperty("User-Id", userId);
con.setConnectTimeout(20000);
con.setReadTimeout(300000);
OutputStream outStream = con.getOutputStream();
outStream.write(PostData);
outStream.flush();
outStream.close();
System.out.println(con.getResponseCode());
System.out.println(con.getResponseMessage());
// 读取返回内容
try {
InputStream in = con.getInputStream();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
con.disconnect();
}
}
System.out.println(result.toString());
return result.toString();
}
public byte[] file2byte(InputStream input) {
byte[] data = null;
try {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
} catch (FileNotFoundException ex1) {
ex1.printStackTrace();
} catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}
}
========================================================
package com.certus.util.httpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.certus.util.CommonUtil;
/**
* @description 抽象HttpClient 请求web服务器的request
* @author renjing
* @time 2015年2月10日上午10:15:37
*/
public abstract class AbstractHttpClientRequest implements HttpClientRequest {
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractHttpClientRequest.class);
// 请求URL地址
protected String url;
// 请求参数
protected Map<String, Object> params;
/**
* Constructor Method With All Params
* @param url 请求URL
*/
public AbstractHttpClientRequest(String url) {
if (StringUtils.isEmpty(url))
throw new NullPointerException("Cannot constract a HttpClientRequest with empty url.");
this.url = url;
this.params = new HashMap<String, Object>();
}
/**
* 添加request参数
* @param name 参数名
* @param value 参数值
*/
public void addParam(String name, Object value) {
this.params.put(name, value);
}
/**
* 执行请求
* @throws HttpClientException httpClient请求异常
*/
@Override
public int process(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException {
String auth_token = null;
try {
auth_token = CommonUtil.getAuthToken();
} catch (Exception e) {
e.printStackTrace();
}
// 获取子类的具体的HttpMethod实现
HttpMethod httpMethod = this.getHttpMethod();
// Head 里面塞值 -- modify by renjing
// --- X-Auth-Token 值取什么?
logger.info("client auth_token=" + auth_token);
Header header = new Header("X-Auth-Token", auth_token);
httpMethod.setRequestHeader(header);
if (ObjectUtils.isNull(httpMethod))
throw new NullPointerException("Cannot process request because the httpMethod is null.");
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
long start = System.currentTimeMillis();
logger.info("Begin to visit {}.", httpMethod.getURI());
httpClient.executeMethod(httpMethod);
logger.info("End to visit and take: {} ms.", (System.currentTimeMillis() - start));
} catch (IOException e) {
throw new HttpClientException(httpMethod.getPath(), e.getMessage());
}
// 利用HttpClientResponseHandler处理响应结果
String retCode = null;
String msg = null;
if (ObjectUtils.isNotNull(httpClientResponseHandler))
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(httpMethod.getResponseBodyAsStream()));
StringBuilder builder = new StringBuilder();
String str = null;
while ((str = reader.readLine()) != null) {
builder.append(str);
}
String response = builder.toString();
// httpClientResponseHandler.handle(response);
JSONObject jsonObj = JSONObject.parseObject(response);// .fromObject(response);
retCode = jsonObj.getString("retCode");
msg = jsonObj.getString("msg");
httpClientResponseHandler.handle(response, retCode, msg);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
httpMethod.releaseConnection();
/* if (retCode == null || !retCode.equals("ok")) {
throw new RuntimeException(msg);
} else {
return 0;
}*/
return 0;
}
/**
* 执行请求
* @throws HttpClientException httpClient请求异常 需要记录日志
*/
@Override
public int processAndSaveLog(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException {
String auth_token = null;
try {
auth_token = CommonUtil.getAuthToken();
} catch (Exception e) {
e.printStackTrace();
}
// 获取子类的具体的HttpMethod实现
HttpMethod httpMethod = this.getHttpMethod();
// Head 里面塞值 -- modify by renjing
// --- X-Auth-Token 值取什么?
logger.info("client auth_token=" + auth_token);
// Header header = new Header("X-Auth-Token", auth_token);
httpMethod.addRequestHeader("X-Auth-Token", auth_token);
httpMethod.addRequestHeader("Event-Id", UUID.randomUUID().toString());
httpMethod.addRequestHeader("User-Id", CommonUtil.getUserId());
if (ObjectUtils.isNull(httpMethod))
throw new NullPointerException("Cannot process request because the httpMethod is null.");
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
long start = System.currentTimeMillis();
logger.info("Begin to visit {}.", httpMethod.getURI());
httpClient.executeMethod(httpMethod);
logger.info("End to visit and take: {} ms.", (System.currentTimeMillis() - start));
} catch (IOException e) {
throw new HttpClientException(httpMethod.getPath(), e.getMessage());
}
// 利用HttpClientResponseHandler处理响应结果
String retCode = null;
String msg = null;
if (ObjectUtils.isNotNull(httpClientResponseHandler))
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(httpMethod.getResponseBodyAsStream()));
StringBuilder builder = new StringBuilder();
String str = null;
while ((str = reader.readLine()) != null) {
builder.append(str);
}
String response = builder.toString();
// httpClientResponseHandler.handle(response);
JSONObject jsonObj = JSONObject.parseObject(response);// .fromObject(response);
retCode = jsonObj.getString("retCode");
msg = jsonObj.getString("msg");
httpClientResponseHandler.handle(response, retCode, msg);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
httpMethod.releaseConnection();
/* if (retCode == null || !retCode.equals("ok")) {
throw new RuntimeException(msg);
} else {
return 0;
}*/
return 0;
}
/**
* 子类实现返回具体的HttpMethod对象
* @return HttpMethod
*/
public abstract HttpMethod getHttpMethod();
}
================================================================
/**
*
*/
package com.certus.util.httpClient;
/**
* @descriptionHttpClient 请求web服务器的request
* @author renjing
* @tiem 2015年2月10日上午10:15:37
*/
public interface HttpClientRequest {
/**
* 添加request参数
* @param name 参数名
* @param value 参数值
*/
public void addParam(String name, Object value);
/**
* 执行request请求
* @param httpClientResponseHandler 处理响应数据handler
* @throws HttpClientException
*/
public int process(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException;
public int processAndSaveLog(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException;
}
=======================================
例子
String resultJson = JSONObject.toJSON(instance).toString();
HttpClientPostRequest postRequest = new HttpClientPostRequest(ConfigFileLoad.getConfContent("NFVO_IP") + "/rest/nsrs/instantiate");
String result = postRequest.processPostEntity(resultJson, true);
JSONObject jsonObj = JSONObject.parseObject(result);
*
*/
package com.certus.util.httpClient;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.UUID;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.log4j.Logger;
import com.certus.util.CommonUtil;
/**
* @description 通过HttpClient Post请求服务器数据的Request
* @author renjing
* @time 2015年2月10日上午10:15:37
*/
public class HttpClientPostRequest extends AbstractHttpClientRequest {
private Logger logger = Logger.getLogger(HttpClientPostRequest.class);
public HttpClientPostRequest(String url) {
super(url);
}
/*@Override
public HttpMethod getHttpMethod() {
NameValuePair[] pairs = new NameValuePair[this.params.size()];
NameValuePair pair = null;
String contentType = "multipart/form-data";
int i = 0;
for (Entry<String, Object> entry : params.entrySet()) {
pair = new NameValuePair(entry.getKey(), String.valueOf(entry
.getValue()));
pairs[i++] = pair;
}
PostMethod httpMethod = new PostMethod(this.url);
httpMethod.setRequestBody(pairs);
if (StringUtils.isNotEmpty(contentType))
httpMethod.setRequestHeader("Content-Type", contentType);
return httpMethod;
}*/
@Override
public HttpMethod getHttpMethod() {
/* NameValuePair[] pairs = new NameValuePair[this.params.size()];
NameValuePair pair = null;
String contentType = "";
int i = 0;
for (Entry<String, Object> entry : params.entrySet()) {
pair = new NameValuePair(entry.getKey(), String.valueOf(entry.getValue()));
pairs[i++] = pair;
}
PostMethod httpMethod = new PostMethod(this.url);
httpMethod.setRequestBody(pairs);
if (StringUtils.isNotEmpty(contentType))
httpMethod.setRequestHeader("Content-Type", contentType);
return httpMethod;*/
return null;
}
public String processPost(InputStream input, String tempName, String userId, String token) throws HttpClientException {
String result = httpSendPIC(url, tempName, file2byte(input), userId, token);
return result;
}
/**
*
* @Title 函数名称:processPostEntity
* @Description 功能描述:创建实例 需要post一个 entity的json(String)格式
* @param 参 数:
* @return 返 回 值:String
* @throws
*/
@SuppressWarnings({ "resource", "deprecation" })
public String processPostEntity(String entityJson) {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
// 添加参数
method.setEntity(new StringEntity(entityJson, HTTP.UTF_8));
method.setHeader("X-Auth-Token", token);
method.setHeader("Content-Type", "application/Json");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
/**
*
* @Title 函数名称: processPostEntity
* @Description 功能描述: 创建实例 需要post一个 entity的json(String)格式
* @param 参 数:
* @return 返 回 值: String
* @throws
*/
@SuppressWarnings({ "resource", "deprecation" })
public String processPostEntity(String entityJson, boolean isPostInfo) {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
// 添加参数
method.setEntity(new StringEntity(entityJson, HTTP.UTF_8));
method.setHeader("X-Auth-Token", token);
// 记录日志需要的参数
if (isPostInfo) {
method.setHeader("Event-Id", UUID.randomUUID().toString());
method.setHeader("User-Id", CommonUtil.getUserId());
}
method.setHeader("Content-Type", "application/Json");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
@SuppressWarnings({ "resource", "deprecation" })
public String processPostParam() {
String token = CommonUtil.getAuthToken();
StringBuffer result = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (method != null) {
try {
method.setHeader("X-Auth-Token", token);
method.setHeader("Content-Type", "text/plain");
// 设置编码
HttpResponse response = httpClient.execute(method);
InputStream in = response.getEntity().getContent();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
int statusCode = response.getStatusLine().getStatusCode();
logger.info("statusCode:" + statusCode);
} catch (IOException e) {
// 发生网络异常
logger.error("exception occurred!\n" + ExceptionUtils.getFullStackTrace(e));
} finally {
method.abort();
}
}
return result.toString();
}
public String httpSendPIC(String url, String tplName, byte[] PostData, String userId, String token) {
StringBuffer result = new StringBuffer();
URL u = null;
HttpURLConnection con = null;
// 尝试发送请求
try {
u = new URL(url + "?nsdName=" + URLEncoder.encode(tplName, "UTF-8"));
u = new URL(url + "?nsdName=" + tplName);
// u = new URL(url);
con = (HttpURLConnection) u.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "multipart/form-data");
con.setRequestProperty("X-Auth-Token", token);
con.setRequestProperty("Event-Id", UUID.randomUUID().toString());
con.setRequestProperty("User-Id", userId);
con.setConnectTimeout(20000);
con.setReadTimeout(300000);
OutputStream outStream = con.getOutputStream();
outStream.write(PostData);
outStream.flush();
outStream.close();
System.out.println(con.getResponseCode());
System.out.println(con.getResponseMessage());
// 读取返回内容
try {
InputStream in = con.getInputStream();
BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String st = breader.readLine();
result.append(st);
while (st != null) {
st = breader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
con.disconnect();
}
}
System.out.println(result.toString());
return result.toString();
}
public byte[] file2byte(InputStream input) {
byte[] data = null;
try {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
} catch (FileNotFoundException ex1) {
ex1.printStackTrace();
} catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}
}
========================================================
package com.certus.util.httpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.certus.util.CommonUtil;
/**
* @description 抽象HttpClient 请求web服务器的request
* @author renjing
* @time 2015年2月10日上午10:15:37
*/
public abstract class AbstractHttpClientRequest implements HttpClientRequest {
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractHttpClientRequest.class);
// 请求URL地址
protected String url;
// 请求参数
protected Map<String, Object> params;
/**
* Constructor Method With All Params
* @param url 请求URL
*/
public AbstractHttpClientRequest(String url) {
if (StringUtils.isEmpty(url))
throw new NullPointerException("Cannot constract a HttpClientRequest with empty url.");
this.url = url;
this.params = new HashMap<String, Object>();
}
/**
* 添加request参数
* @param name 参数名
* @param value 参数值
*/
public void addParam(String name, Object value) {
this.params.put(name, value);
}
/**
* 执行请求
* @throws HttpClientException httpClient请求异常
*/
@Override
public int process(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException {
String auth_token = null;
try {
auth_token = CommonUtil.getAuthToken();
} catch (Exception e) {
e.printStackTrace();
}
// 获取子类的具体的HttpMethod实现
HttpMethod httpMethod = this.getHttpMethod();
// Head 里面塞值 -- modify by renjing
// --- X-Auth-Token 值取什么?
logger.info("client auth_token=" + auth_token);
Header header = new Header("X-Auth-Token", auth_token);
httpMethod.setRequestHeader(header);
if (ObjectUtils.isNull(httpMethod))
throw new NullPointerException("Cannot process request because the httpMethod is null.");
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
long start = System.currentTimeMillis();
logger.info("Begin to visit {}.", httpMethod.getURI());
httpClient.executeMethod(httpMethod);
logger.info("End to visit and take: {} ms.", (System.currentTimeMillis() - start));
} catch (IOException e) {
throw new HttpClientException(httpMethod.getPath(), e.getMessage());
}
// 利用HttpClientResponseHandler处理响应结果
String retCode = null;
String msg = null;
if (ObjectUtils.isNotNull(httpClientResponseHandler))
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(httpMethod.getResponseBodyAsStream()));
StringBuilder builder = new StringBuilder();
String str = null;
while ((str = reader.readLine()) != null) {
builder.append(str);
}
String response = builder.toString();
// httpClientResponseHandler.handle(response);
JSONObject jsonObj = JSONObject.parseObject(response);// .fromObject(response);
retCode = jsonObj.getString("retCode");
msg = jsonObj.getString("msg");
httpClientResponseHandler.handle(response, retCode, msg);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
httpMethod.releaseConnection();
/* if (retCode == null || !retCode.equals("ok")) {
throw new RuntimeException(msg);
} else {
return 0;
}*/
return 0;
}
/**
* 执行请求
* @throws HttpClientException httpClient请求异常 需要记录日志
*/
@Override
public int processAndSaveLog(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException {
String auth_token = null;
try {
auth_token = CommonUtil.getAuthToken();
} catch (Exception e) {
e.printStackTrace();
}
// 获取子类的具体的HttpMethod实现
HttpMethod httpMethod = this.getHttpMethod();
// Head 里面塞值 -- modify by renjing
// --- X-Auth-Token 值取什么?
logger.info("client auth_token=" + auth_token);
// Header header = new Header("X-Auth-Token", auth_token);
httpMethod.addRequestHeader("X-Auth-Token", auth_token);
httpMethod.addRequestHeader("Event-Id", UUID.randomUUID().toString());
httpMethod.addRequestHeader("User-Id", CommonUtil.getUserId());
if (ObjectUtils.isNull(httpMethod))
throw new NullPointerException("Cannot process request because the httpMethod is null.");
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
long start = System.currentTimeMillis();
logger.info("Begin to visit {}.", httpMethod.getURI());
httpClient.executeMethod(httpMethod);
logger.info("End to visit and take: {} ms.", (System.currentTimeMillis() - start));
} catch (IOException e) {
throw new HttpClientException(httpMethod.getPath(), e.getMessage());
}
// 利用HttpClientResponseHandler处理响应结果
String retCode = null;
String msg = null;
if (ObjectUtils.isNotNull(httpClientResponseHandler))
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(httpMethod.getResponseBodyAsStream()));
StringBuilder builder = new StringBuilder();
String str = null;
while ((str = reader.readLine()) != null) {
builder.append(str);
}
String response = builder.toString();
// httpClientResponseHandler.handle(response);
JSONObject jsonObj = JSONObject.parseObject(response);// .fromObject(response);
retCode = jsonObj.getString("retCode");
msg = jsonObj.getString("msg");
httpClientResponseHandler.handle(response, retCode, msg);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
httpMethod.releaseConnection();
/* if (retCode == null || !retCode.equals("ok")) {
throw new RuntimeException(msg);
} else {
return 0;
}*/
return 0;
}
/**
* 子类实现返回具体的HttpMethod对象
* @return HttpMethod
*/
public abstract HttpMethod getHttpMethod();
}
================================================================
/**
*
*/
package com.certus.util.httpClient;
/**
* @descriptionHttpClient 请求web服务器的request
* @author renjing
* @tiem 2015年2月10日上午10:15:37
*/
public interface HttpClientRequest {
/**
* 添加request参数
* @param name 参数名
* @param value 参数值
*/
public void addParam(String name, Object value);
/**
* 执行request请求
* @param httpClientResponseHandler 处理响应数据handler
* @throws HttpClientException
*/
public int process(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException;
public int processAndSaveLog(HttpClientResponseHandler httpClientResponseHandler) throws HttpClientException;
}
=======================================
例子
String resultJson = JSONObject.toJSON(instance).toString();
HttpClientPostRequest postRequest = new HttpClientPostRequest(ConfigFileLoad.getConfContent("NFVO_IP") + "/rest/nsrs/instantiate");
String result = postRequest.processPostEntity(resultJson, true);
JSONObject jsonObj = JSONObject.parseObject(result);
0 0
- http代替ajax获取数据
- http 代替 ajax原理解析
- 使用jsou代替API获取数据
- ajax获取数据
- ajax异步获取数据
- ajax同步获取数据
- ajax获取json数据
- Ajax获取action数据
- 公司-->ajax获取数据
- Ajax获取Json数据
- ajax获取数据
- Select2-Ajax获取数据
- Ajax同步获取数据
- AJAX获取JSON数据
- beego获取ajax数据
- Http接口获取数据
- 使用基于Http的消息代替WebService的数据交互
- 使用基于Http的消息代替WebService的数据交互
- ehcache 应用
- R-CNN and YOLO
- 逻辑回归
- Linux风雨20年,道路是沧桑
- 【BZOJ 1858】【SCOI 2010】序列操作
- http代替ajax获取数据
- 今天开始挑战pythonchalleng
- 【原创】pythonchalleng——第0题
- rest
- dubbo与nginx都可以做负载均衡,然而哪个相对来说更优秀?为什么?
- 小猫咪玩老鼠
- 前端两个页面之间传递状态
- http 代替 ajax原理解析
- 关于影印版与翻译版的对比