关于java response的两种页面输出方式,以及HttpUrlconnection 代理使用注意点

原创 2013年12月05日 13:35:46

String="www.baidu.com"  //代理百度

URL url=new URL(connUrl);  //创建url对象

HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //创建连接对象

onn.setRequestProperty("Content-Type","text/html; charset=UTF-8"); //设置传递的编码方式


conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

conn.setRequestMethod("POST");//post提交方式

conn.setDoInput(true);

conn.setDoOutput(true);

 

reponse.getWriter();//以字符流输出,代理中有可能出现编码问题

reponse.getOutputStream();以字节流输出

 

 ---------------------------------------------------------------------------------------------下面为代码---------------------------------------------------------------------------------------------

 

//设置post和get方法

private static final String SERVER_POST="POST";
private static final String SERVLET_GET = "GET";

//post访问方法
 public  static HttpURLConnection doPost(HttpServletRequest request, HttpServletResponse response,String connUrl) throws IOException{
   Enumeration<String> e=  request.getParameterNames();
   StringBuffer param=new StringBuffer();

//获取页面表单信息
     while(e.hasMoreElements())
          {
              String name=(String)e.nextElement();
              String namepar[]=request.getParameterValues(name);
              for(int i=0;i<namepar.length;i++)
                   {
                param.append(name).append("=").append(namepar[i]).append("&"); 
                   }
          }
     if(param.length()!=0){
       param.deleteCharAt(param.length()-1);//去除最后一个&符号
     }
     URL url=new URL(connUrl);
   HttpURLConnection conn=(HttpURLConnection)url.openConnection();
   conn.setRequestProperty("Content-Type","text/html; charset=UTF-8"); 
   conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
   conn.setRequestMethod(SERVER_POST);
   conn.setDoInput(true);
   conn.setDoOutput(true);
   conn.connect(); 

//往代理服务端传递信息
   DataOutputStream out = new DataOutputStream(conn.getOutputStream());
   out.write(param.toString().getBytes("utf-8"));
   out.flush();
   out.close();
   return conn;
 }

 

//get访问方法
 public  static HttpURLConnection doGet(HttpServletRequest request, HttpServletResponse response,String connUrl) throws IOException{
  Enumeration<String> e=  request.getParameterNames();
  StringBuffer param=new StringBuffer();
    while(e.hasMoreElements())
         {
             String name=(String)e.nextElement();
             String namepar[]=request.getParameterValues(name);
             for(int i=0;i<namepar.length;i++)
                  {
               param.append(name).append("=").append(namepar[i]).append("&"); 
                  }
         }
    if(param.length()!=0){
      param.deleteCharAt(param.length()-1);
    }
    URL url=new URL(connUrl+"?"+param.toString());
   HttpURLConnection conn=(HttpURLConnection)url.openConnection();
   conn.setRequestMethod(SERVLET_GET); 
   conn.setRequestProperty("Content-Type","text/html; charset=UTF-8"); 
   conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
   conn.connect(); 
   return conn;
 }

 

//执行方法,传入request和response,以及访问的Url
 public static byte[] exec(HttpServletRequest request, HttpServletResponse response,String connUrl) throws Exception{ 
  HttpURLConnection conn=null;
  if(request.getMethod().equalsIgnoreCase(SERVER_POST)){
    conn=doPost(request, response,connUrl);
  }
  else{
    conn=doGet(request, response,connUrl);
  }
  byte[] b= readInputStream(conn.getInputStream());
  response.getOutputStream().write(b);
  response.getOutputStream().flush();
  response.getOutputStream().close();
  conn.disconnect();
     return b;
 }
 
 //读取输入流
 public static byte[] readInputStream(InputStream inStream) throws Exception{
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len = inStream.read(buffer)) !=-1 ){
            outStream.write(buffer, 0, len);
        }
        byte[] data = outStream.toByteArray();//形成网页的流
        outStream.close();
        inStream.close();
        return data;
    }
 

//例子
 public static void main(String[] args) throws Exception {
  HttpServletRequest request = null;
  HttpServletResponse response = null;
  String connUrl="www.baidu.com";
  exec(request,response,connUrl);
 }

 

 

原版百度搜索,和代理版百度搜索

 

由于传入参数有编码格式的要求,此方法为get的方法,所以只能用英文,如果想用中文索索,请使用post的提交方式,

 

 

 

最近在做java项目,做此笔记,造福程旭媛----------------------------------------------------爱神酷星(萧星)

Java发送Http请求,解析html返回

首先,向一个Web站点发送POST请求只需要简单的几步:  注意,这里不需要导入任何第三方包  [java] view plaincopy package com.test;  ...
  • focusjava
  • focusjava
  • 2014年03月29日 23:04
  • 3240

Java读取html页面以文件流方式输出显示在页面

需求:实现服务器上excel文件转html,然后在浏览器上以流的方式读出(不让用户看到文件存放位置): Java以字节流读取html文件,然后想在前台显示:读取html代码如下: respon...
  • woweipingzui
  • woweipingzui
  • 2016年04月01日 16:34
  • 16994

response向客户端输出的两种方式

....
  • hgxbra
  • hgxbra
  • 2016年12月23日 08:25
  • 1122

Response对象通过字节流输出中文内容

Response对象通过字节流输出中文内容:
  • wangyanming123
  • wangyanming123
  • 2016年08月21日 10:49
  • 5324

response.getWriter().write()与out.print()的区别

1、首先介绍write()和print()方法的区别:   (1)、write():仅支持输出字符类型数据,字符、字符数组、字符串等   (2)、print():可以将各种类型(包括Object)...
  • javaloveiphone
  • javaloveiphone
  • 2012年10月31日 18:40
  • 59185

JavaWeb学习篇之----容器Response详解

今天在来看一下Response容器的相关知识,其实这篇blog早就应该编写了,只是最近有点忙,所以被中断了。下面我们就来看一下Response容器的相关知识吧。Response和我们即将在后面说到的R...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年04月03日 18:36
  • 36857

JavaWeb之Request对象和Response对象详解

一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象 一、Response对象     1.Res...
  • yuanjian19900610
  • yuanjian19900610
  • 2013年04月14日 14:28
  • 11106

Java进阶学习第十天——request&response

response对象(响应对象) HttpServletResponse对象服务器的响应 响应行 响应头 响应体 常见案例 重定向(登陆页面) 页面定时刷新(页面读秒操作) 禁用浏览器缓存(三个头信息...
  • lutianfeiml
  • lutianfeiml
  • 2016年05月04日 18:10
  • 4797

java response 输出js

response.setContentType("text/html; charset=UTF-8"); //转码    PrintWriter out = response.getWriter()...
  • WAYnL
  • WAYnL
  • 2016年06月04日 09:11
  • 871

java Response详解

今天在来看一下Response容器的相关知识,其实这篇blog早就应该编写了,只是最近有点忙,所以被中断了。下面我们就来看一下Response容器的相关知识吧。Response和我们即将在后面说到的R...
  • methods2011
  • methods2011
  • 2014年11月01日 16:12
  • 2292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于java response的两种页面输出方式,以及HttpUrlconnection 代理使用注意点
举报原因:
原因补充:

(最多只允许输入30个字)