关于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项目,做此笔记,造福程旭媛----------------------------------------------------爱神酷星(萧星)

HttpURLConnection 完成Http送信服务,得到response响应

HTTP送信java代码,用HttpUrl来完成HTTP发送报文接受报文! import java.io.BufferedInputStream; import java.io.ByteArrayO...
  • ahhsxy
  • ahhsxy
  • 2011年10月28日 17:11
  • 2415

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

1、首先介绍write()和print()方法的区别:   (1)、write():仅支持输出字符类型数据,字符、字符数组、字符串等   (2)、print():可以将各种类型(包括Object)...

java response 输出js

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

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

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

JavaWeb之Request对象和Response对象详解

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

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

response对象(响应对象) HttpServletResponse对象服务器的响应 响应行 响应头 响应体 常见案例 重定向(登陆页面) 页面定时刷新(页面读秒操作) 禁用浏览器缓存(三个头信息...

java_web学习第四天(request和response的学习)

request和response(请求和响应)  1.当Web容器收到客户端的发送过来http请求,会针对每一次请求,分别创建一个用于代表此次请求的HttpServletRequest对象(req...

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

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

response实现案例之向页面输出中文解决乱码问题

1.向页面输出中文(乱码问题)                 1.1字节:                      ServletOutputStream getOutputStream()   ...

解决HttpServletResponse输出的中文乱码问题

首先,response返回有两种,一种是字节流outputstream,一种是字符流printwrite。 申明:这里为了方便起见,所有输出都统一用UTF-8编码。 先说字节流,要输出“中国"...
  • simon_1
  • simon_1
  • 2013年06月14日 11:51
  • 93050
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于java response的两种页面输出方式,以及HttpUrlconnection 代理使用注意点
举报原因:
原因补充:

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