http顶替ajax获取数据
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
http代替ajax获取数据
/**
*
*/
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);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
AJAX跨域问题解决方法(4)——调用方解决跨域
调用方解决跨域的方法只有一种,那就是隐藏跨域。 何为隐藏跨域? 隐藏跨域的核心...
-
jsp页面返回xml格式数据 ajax读取不到
初学ajax , 用 jsp 写一个用户登录的验证处理, ajax请求的页面返回的是xml格式的数据
...
-
ajax返回数据之前的loading等待
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数...
-
ajax运行流程困惑
<html>
<head>
<script type="text/javascript">
function showCustomer(str)
{
var xmlhttp;
if (s...
-
关于ajax一些基础的东西。
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", url, true);
...
-
ajax向springmvc传递对象参数
我们在使用前端的ajax技术过程中,有的时候简简单单的向后台的springmvn传递参数,直接使用如下...
-
Firefox AJAX请求readyState = 0,status = 0问题
今天在测试的时候,狂刷页面AJAX请求就会出错,Chrome浏览器没问题,Firefox就报错!
...
-
jquery的success不执行,只执行error,求大虾帮忙看下,感激不尽
本帖最后由 showbo 于 2015-05-28 11:49:05 编辑
...
-
jqury中关于ajax的几个常用的函数
一:
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
什么是 AJAX ?
AJAX =...
-
Ajax的get请求向服务器请求数据五步骤?
如下:
①创建ajax对象
②建立http请求
③发送http请求
④设置ajax对象状态改变的回调函数
...