HttpURLConnection模拟请求小例子

HttpURLConnection用法详解

一、简介

HttpURLConnection类是另一种访问HTTP资源的方式。

二、连接步骤

1、通过openConnection方法创建连接对象。

2、设置请求头和请求体

3、使用connect方法于远程对象进行连接

4、远程对象变得可用,其字段和内容变得可访问

三、用法

1、创建连接

// 获取连接的URL

URLurl= newURL("http://localhost:8080/day10-http/ServletDemo1");

// 打开连接

HttpURLConnectionhttp= (HttpURLConnection) url.openConnection();


2、设置请求参数

//提交模式,默认是“GET”

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

//设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在

//http正文内,因此需要设为true,默认情况下是false;

conn.setDoOutput(true);

//设置是否从httpUrlConnection读入,默认情况下是true;

conn.setDoInput(true);

//Post 请求不能使用缓存

conn.setUseCaches(false);

//设定传送的内容类型是可序列化的java对象

//(如果不设此项,在传送序列化对象时,WEB服务默认的不是这种类型时可能抛java.io.EOFException)

//conn.setRequestProperty("Content-type","application/x-java-serialized-object");

conn.setRequestProperty("Content-Type","application/json;charset=UTF-8"); //设置请求属性

conn.setRequestProperty("User-Agent","Autoyol_gpsCenter");

//连接,从上述中url.openConnection()至此的配置必须要在connect之前完成,


3、连接

conn.connect();

4、使用输入输出流传递参数

Stringstr= "{\"name\":\"小李\"}";

OutputStream os = conn.getOutputStream();

os.write(str.getBytes());

os.flush();

os.close();

//如果我将此段放在if里面,那么他会爆出不能将输出放在输入之后的问题,将其放在外面就OK

if(conn.getResponseCode()==200){

InputStreamis= conn.getInputStream();

byte[]buffer= newbyte[1024];

ByteArrayOutputStreambaos= newByteArrayOutputStream();

for(intlen=0;(len= is.read(buffer))>0;){

baos.write(buffer,0, len);

}

StringreturnValue= newString(baos.toByteArray(),"utf-8");

System.out.println(returnValue);

baos.flush();

baos.close();

is.close();

}

servlet

request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        
        response.getWriter().write("hello");
        InputStream is = request.getInputStream();
        byte[] buffer = new byte[1024];
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         for(int len =0;(len = is.read(buffer))>0;) {
             baos.write(buffer, 0, len);
         }
         String returnValue = new String(baos.toByteArray(), "utf-8" );
         System.out.println(returnValue);
         baos.flush();
         baos.close();
         is.close();



你可能感兴趣的:(Servlet)