在后台模拟页面发出请求并获取结果

package com.uniestate.action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class BaseAction extends ActionSupport {

    protected Map<String, Object> session;
    /**
     * 连接超时
     */
    private int connectTimeOut = 5000;

    /**
     * 读取数据超时
     */
    private int readTimeOut = 10000;

    /**
     * 请求编码
     */
    private String requestEncoding = "UTF-8";

    /* 杩斿洖JSON */
    protected void ReturnMessage(String msg) {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = null;
        try {
            writer = response.getWriter();
            writer.print(msg);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        writer.flush();
        writer.close();
    }

    protected  String GetData(String urlStr) {
        BufferedReader l_reader = null;
        String sTotalString="";
        try {
            URL url = new URL(urlStr);
            URLConnection connection = url.openConnection();
            String sCurrentLine;
            sCurrentLine = "";
            sTotalString = "";
            InputStream l_urlStream;
            l_urlStream = connection.getInputStream();
            l_reader = new BufferedReader(new InputStreamReader(l_urlStream, "UTF-8"));
            while ((sCurrentLine = l_reader.readLine()) != null) {
                sTotalString += sCurrentLine;
            }
            //return sTotalString;
        } catch (Exception ex) {
            ex.printStackTrace();
            return "FAILD:" + ex.getMessage();
        } finally {
            try {
                if (l_reader != null) {
                    l_reader.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
                return "FAILD:" + ex.getMessage();
            }
        }
        return sTotalString;
    }

    /* 转向 */
    protected String doPost(String inReqUrl) {
        String reqUrl = inReqUrl;
        Map parameters = this.getParameterMap();
        HttpURLConnection url_con = null;
        String responseContent = null;
        try {
            StringBuffer params = new StringBuffer();
            for (Iterator iter = parameters.entrySet().iterator(); iter.hasNext();) {
                Entry element = (Entry) iter.next();
                params.append(element.getKey().toString());
                params.append("=");
                params.append(URLEncoder.encode(element.getValue().toString(), requestEncoding));
                params.append("&");
            }

            if (params.length() > 0) {
                params = params.deleteCharAt(params.length() - 1);
            }

            URL url = new URL(reqUrl);
            url_con = (HttpURLConnection) url.openConnection();
            url_con.setRequestMethod("POST");
            System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(connectTimeOut));// (单位:毫秒)jdk1.4换成这个,连接超时
            System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(readTimeOut)); // (单位:毫秒)jdk1.4换成这个,读操作超时
            // url_con.setConnectTimeout(5000);//(单位:毫秒)jdk
            // 1.5换成这个,连接超时
            // url_con.setReadTimeout(5000);//(单位:毫秒)jdk 1.5换成这个,读操作超时
            url_con.setDoOutput(true);
            byte[] b = params.toString().getBytes();
            url_con.getOutputStream().write(b, 0, b.length);
            url_con.getOutputStream().flush();
            url_con.getOutputStream().close();

            InputStream in = url_con.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(in, requestEncoding));
            String tempLine = rd.readLine();
            StringBuffer tempStr = new StringBuffer();
            // String crlf=System.getProperty("line.separator");
            while (tempLine != null) {
                tempStr.append(tempLine);
                // tempStr.append(crlf);
                tempLine = rd.readLine();
            }
            responseContent = tempStr.toString();
            rd.close();
            in.close();
        } catch (IOException e) {
            responseContent = "ERROR";
        } finally {
            if (url_con != null) {
                url_con.disconnect();
            }
        }
        return responseContent;
    }

    /* 杞寲涓烘暟瀛 */
    protected int ConvertObjToInt(String value) {
        try {
            return Integer.parseInt(value);

        } catch (Exception ex) {
            return 0;
        }

    }

    /* 获取网页参数 */
    protected Map getParameterMap() {
        HttpServletRequest request = ServletActionContext.getRequest();
        // 参数Map
        Map properties = request.getParameterMap();
        // 返回值Map
        Map returnMap = new HashMap();
        Iterator entries = properties.entrySet().iterator();
        Map.Entry entry;
        String name = "";
        String value = "";
        while (entries.hasNext()) {
            entry = (Map.Entry) entries.next();
            name = (String) entry.getKey();
            Object valueObj = entry.getValue();
            if (null == valueObj) {
                value = "";
            } else if (valueObj instanceof String[]) {
                String[] values = (String[]) valueObj;
                for (int i = 0; i < values.length; i++) {
                    value = values[i] + ",";
                }
                value = value.substring(0, value.length() - 1);
            } else {
                value = valueObj.toString();
            }
            returnMap.put(name, value);
        }
        return returnMap;
    }

    /* 获取参数 */
    protected String GetParam(String keyValue) {
        HttpServletRequest request = ServletActionContext.getRequest();
        try {
            String nameStr = request.getParameter(keyValue);
            nameStr = new String(java.net.URLDecoder.decode(nameStr, "UTF-8"));
            return nameStr;
        } catch (Exception ex) {
            return request.getParameter(keyValue);
        }
    }

}

被请求的url的方法最后需按照以下格式,数据才能被接收

HttpServletResponse response = ServletActionContext.getResponse();
            response.setCharacterEncoding("utf-8");
            PrintWriter writer = response.getWriter();
            writer.print(json);
            writer.flush();
            writer.close();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,187评论 6 13
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,376评论 11 349
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,956评论 0 15
  • 也许,在未来,你将会开着法拉利,住着豪华别墅,
    b3575d945a08阅读 246评论 0 0