专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Ajax

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);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: