Java HttpURLConnection 以数据流写数据到Servlet

***************************************************
    客户器端代码,响应请求流
***************************************************


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());

posted @ 2016-01-17 21:37  涂文鼎  阅读(838)  评论(0编辑  收藏  举报