您的位置:首页 > 理论基础 > 计算机网络

Java HttpURLConnection 以数据流写数据到Servlet

2016-01-17 21:37 459 查看
***************************************************
客户器端代码,响应请求流
***************************************************

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class StreamPostTest {
public static final String ENCODING_REQUEST = "utf-8";
public static final String ENCODING_RESPONSE = "gb2312";

public static void main(String args[]) {
String requestString = "我们要以流发送的数据...";
HttpURLConnection httpURLConnection;
try {
//建立链接
URL gatewayUrl = new URL("http://localhost/xmlTest.do");
httpURLConnection = (HttpURLConnection) gatewayUrl.openConnection();

//设置连接属性
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setUseCaches(false);

//获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
byte[] requestStringBytes = requestString.getBytes(ENCODING_REQUEST);

//设置请求属性
httpURLConnection.setRequestProperty("Content-length", "" + requestStringBytes.length);
httpURLConnection.setRequestProperty("Content-Type", "application/octet-stream");

//建立输出流,并写入数据
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(requestStringBytes);
outputStream.close();

//获得响应状态
int responseCode = httpURLConnection.getResponseCode();

if (HttpURLConnection.HTTP_OK == responseCode) {
//当正确响应时处理数据

System.out.println("");
System.out.println("Http Response OK...");
System.out.println("");

StringBuffer responseBuffer = new StringBuffer();

String readLine;
BufferedReader responseReader;
//处理响应流,必须与服务器响应流输出的编码一致
responseReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), ENCODING_RESPONSE));
while ((readLine = responseReader.readLine()) != null) {
responseBuffer.append(readLine).append("\n");
}
responseReader.close();

System.out.println("Http Response:" + responseBuffer);
}

} catch (IOException e) {
e.fillInStackTrace();
}

}
}

***************************************************
服务器段代码,响应请求流
***************************************************

//获得响应流,获得输入对象
InputStream inputStream = httpServletRequest.getInputStream();
PrintWriter out = httpServletResponse.getWriter();

//建立接收流缓冲,准备处理
StringBuffer requestBuffer = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, ENCODING_REQUEST));

System.out.println("");
System.out.println("Receive Http Request...");
System.out.println("");

//读入流,并转换成字符串
String readLine;
while ((readLine = reader.readLine()) != null) {
requestBuffer.append(readLine).append("\n");
}
reader.close();

//设置响应编码
httpServletResponse.setCharacterEncoding(ENCODING_RESPONSE);

//响应输出
out.println(requestBuffer.toString());
System.out.println("Response:" + requestBuffer.toString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: