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());
客户器端代码,响应请求流
***************************************************
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());
相关文章推荐
- HttpClient第二章 链接管理
- Linux虚拟机启动级别和网络设置
- BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
- BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
- 【转】CentOS 7.0系统安装配置图解教程 | 系统运维(除了网络)
- 从网络Url中下载文件到本地
- android网络编程 二(Apache HttpClient)
- android网络编程 一(HttpURLConnection)
- Android中的Http通信(四)之多线程下载数据
- TCP协议中的三次握手和四次挥手
- TCP三次握手的理解
- TCP的流量控制和拥塞控制
- httpclient,socket
- iOS9https设置info.plist
- CentOS网络配置详解
- CentOS网络配置详解
- Fiddler- -Composer创建和发送HTTP Request
- Java高级部分网络编程重点总结
- MFC HTTP访问URL
- (二)计算机网络体系结构与参考模型