import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.Reader;

import java.io.StringWriter;

import java.io.Writer;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

public class RequestUtil {

public final static String getErrorUrl(HttpServletRequest request) {

String errorUrl = (String) request.getAttribute("javax.servlet.error.request_uri");

if (errorUrl == null) {

errorUrl = (String) request.getAttribute("javax.servlet.forward.request_uri");

}

if (errorUrl == null) {

errorUrl = (String) request.getAttribute("javax.servlet.include.request_uri");

}

if (errorUrl == null) {

errorUrl = request.getRequestURL().toString();

}

return errorUrl;

}

/**

* 获取 请求参数

* @param request

* @return

*/

public static String queryString(HttpServletRequest request){

Map<String, String[]> params = request.getParameterMap();

String queryString = "";

for (String key : params.keySet()) {

String[] values = params.get(key);

for (int i = 0; i < values.length; i++) {

String value = values[i];

if(value!=null){

value=StringUtil.stringURLDecoderByUTF8(value);

}

queryString += key + "=" + value + "&";

}

}

// 去掉最后一个空格

queryString = queryString.substring(0, queryString.length() - 1);

return queryString;

}

public final static StringBuilder getErrorInfoFromRequest(HttpServletRequest request, boolean isInfoEnabled) {

StringBuilder sb = new StringBuilder();

String errorUrl = getErrorUrl(request);

sb.append(StringUtil.formatMsg("Error processing url: %1, Referrer: %2, Error message: %3.\n", errorUrl,

request.getHeader("REFERER"), request.getAttribute("javax.servlet.error.message")));

Throwable ex = (Throwable) request.getAttribute("exception");

if (ex == null) {

ex = (Throwable) request.getAttribute("javax.servlet.error.exception");

}

if (ex != null) {

sb.append(StringUtil.formatMsg("Exception stack trace: \n", ex));

}

return sb;

}

public final static String getHtml(String fullUrl) throws IOException{

URL url = new URL(fullUrl);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

InputStream in = conn.getInputStream();

Writer writer = new StringWriter();

if (in != null) {

char[] buffer = new char[1024];

try {

Reader reader = new BufferedReader(new InputStreamReader(in,

"UTF-8"));

int n;

while ((n = reader.read(buffer)) != -1) {

writer.write(buffer, 0, n);

}

} finally {

in.close();

}

}

return writer.toString();

}

public  static void main(String[]args) throws IOException{

String url="http://www.baidu.com";

String a=getHtml(url);

System.out.println("ss:"+a);

}

}

RequestUtil 获取网址页面信息的更多相关文章

  1. js获取当前页面信息

    设置或获取对象指定的文件名或路径.<script>alert(window.location.pathname)</script> 设置或获取整个 URL 为字符串.<s ...

  2. Python获取web页面信息

    import sys, urllib2 # req = urllib2.Request(sys.argv[1]) req = urllib2.Request('http://www.sina.com. ...

  3. js获取当前页面url网址信息

    js如何准确获取当前页面url网址信息 在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个 ...

  4. js准确获取当前页面url网址信息

    这篇文章主要为大家介绍了js准确获取当前页面url网址信息的多种方法,包括正则法.split拆分法等,需要的朋友可以参考下   在WEB开发中,时常会用到javascript来获取当前页面的url网址 ...

  5. .net 获取https页面的信息 在iis7.5服务器上不管用

    让我纠结了一天多的问题,给大家看下,有相同情况的可以不用浪费时间了,本人当时找了好半天都没找到什么有用的信息,项目在本地没有问题,但部署在服务器后,获取不到https页面的信息,加入下面的代码就可以了 ...

  6. scrapy获取页面信息

    本例子用命令行调试的方式,演示如何获取页面的特定信息: 0) 示例页面 1) 使用scrapy shell获取目标页面: scrapy shell http://bj.lianjia.com/ersh ...

  7. Python+Selenium自动化-获取页面信息

    Python+Selenium自动化-获取页面信息   1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...

  8. Asp获取网址相关参数大全

      Asp获取网址相关参数大全 代码一:[获取地址中的文件名,不包含扩展名]<%dim Url,FileName,File Url=split(request.servervariables(& ...

  9. Javascript动态生成的页面信息爬取和openpyxl包FAQ小记

    最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...

随机推荐

  1. static 关键字在java语言中的特性

    ​ 一,将自己注入到一个静态变量中实现静态类,如下写法 以上方法的目的是要实现一个静态类,方便用类名获取对象实例,一般情况下调用普通方法需要对象实例.这对象要么new出来,要么spring的注入如下是 ...

  2. Linux设备管理——sysfs、udev

    What is the use of Sysfs sysfs is a pseudo file system provided by the Linux kernel that exports inf ...

  3. MySQL/MariaDB数据库的并发控制

    MySQL/MariaDB数据库的并发控制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.并发控制概述 1>.什么是并发控制 MySQL是一个服务器级别的数据库,它通常 ...

  4. Mariadb/MySQL多实例实战

    Mariadb/MySQL多实例实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装MySQL程序 无论你喜欢哪种方式安装均可,关于源码安装,yum安装或者二进制安装,可以 ...

  5. Java中线程池,你真的会用吗?ExecutorService ThreadPoolExcutor

    原文:https://www.hollischuang.com/archives/2888 在<深入源码分析Java线程池的实现原理>这篇文章中,我们介绍过了Java中线程池的常见用法以及 ...

  6. 性能测试基础---URL和HTTP协议

    ·URL和HTTP协议: ·URL构成: URL是web应用进行资源访问的主要方式.一般来说,由五个部分构成: 示例:http://192.168.2.212/phpwind1/searcher.ph ...

  7. python测试开发django-rest-framework-64.序列化(serializers.Serializer)

    前言 REST framework中的serializers与Django的Form和ModelForm类非常像.我们提供了一个Serializer类,它为你提供了强大的通用方法来控制响应的输出, 以 ...

  8. 51nod 1053 最大M子段和 V2

    N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的.如果M >= N个数中正数的个数,那么输出所有正数的和. 例如:-2 ...

  9. 10. vue-router命名路由

    命名路由的配置规则 为了更加方便的表示路由的路径,可以给路由规则起一个别名, 即为"命名路由". const router = new VueRouter ({ routes: [ ...

  10. select2实现多选 并且回显

    html代码:<select name="ruleId" id="ruleId" class="required" onchange= ...