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

时间: 2024-12-28 09:15:05

Java HttpURLConnection 以数据流写数据到Servlet的相关文章

HDFS数据流——写数据流程

剖析HDFS文件写入 假设文件ss.avi共200m,其写入HDFS指定路径/user/atguigu/ss.avi流程如下: 1)客户端向namenode请求上传文件到指定路径,namenode通过元数据检查目标文件是否已存在,父目录是否存在. 2)namenode返回是否可以上传. 3)客户端请求第一个 block上传到哪几个datanode服务器上. 4)namenode返回3个datanode节点(根据副本数),分别为dn1.dn2.dn3. 5)客户端请求dn1上传数据,dn1收到请求

Java 写数据到文件

private boolean writeToFile(BusGpsBean gpsBean) { String dataStr = DateUtil.date2String(new Date(), DateUtil.YMD); String filePath = PathKit.getWebRootPath() + File.separatorChar + "writeFile" + File.separatorChar + dataStr + ".txt"; /

CSDN Android客户端开发(二):详解如何基于Java用Jsoup爬虫HTML数据

本文参考链接详细介绍如何使用Jsoup包抓取HTML数据,是一个纯java工程,并将其打包成jar包.希望了解如何用java语言爬虫网页的可以看下. 杂家前文就又介绍用HTTP访问百度主页得到html的string字符串,但html的文本数据如果不经过处理就是个文本字符串没有任何效果的.所谓的浏览器就是负责将文本的html"翻译"成看到的界面.在前文有介绍,这个csdn的客户端app分首页.业界.移动.研发.程序员.云计算五大类.以业界为例,http://news.csdn.net/ 

Java学习笔记—第十章 数据输入与输出

第十章  数据输入与输出 输入流与输出流: (1)输入流:以程序为基准,向程序中输入数据的流定义为输入流.从输入流向程序中输入数据称为读数据(read). (2)输出流:以程序为基准,从程序输出数据的流称为输出流.从程序中将数据输出到输出流称为写数据(write). 字节流和字符流 (1)字节流:按照字节的形式读/写数据.Java中抽象类InputStream和OutputStream及其派生子类用来处理字节流的输入和输出. (2)字符流:按照字符的形式读/写数据.Java中抽象类Reader和

Hadoop源码分析——数据节点写数据1

即使不考虑数据节点出错后的故障处理,文件写入也是HDFS中最复杂的流程.本章以创建一个新文件并向文件中写入数据,然后关闭文件为例,分析客户端写文件时系统各节点的配合,如下图所示. 客户端调用DistributedFileSystem的create()方法创建文件,上图的步骤1,这时,DistributedFileSystem创建DFSOutputStream,并由远程过程调用,让名字节点执行同名方法,在文件系统的命名空间中创建一个新文件.名字节点创建新文件时,需要执行各种各样的检查,如名字节点处

Hadoop源码分析——数据节点写数据2

数据接收 客户端写往数据节点的数据由org.apache.hadoop.hdfs.server.datanode.BlockReceiver.java中的receiveBlock方法接收 void receiveBlock( DataOutputStream mirrOut, // output to next datanode DataInputStream mirrIn, // input from next datanode DataOutputStream replyOut, // ou

Java Web(二) -- Http协议 & Servlet

Http协议&Servlet Http协议 1.什么是协议 双方在交互.通讯的时候, 遵守的一种规范.规则. 2.http协议 针对网络上的客户端 与 服务器端在执行http请求的时候,遵守的一种规范. 其实就是规定了客户端在访问服务器端的时候,要带上哪些东西, 服务器端返回数据的时候,也要带上什么东西. 版本 1.0 请求数据,服务器返回后, 将会断开连接 1.1 请求数据,服务器返回后, 连接还会保持着. 除非服务器 | 客户端 关掉. 有一定的时间限制,如果都空着这个连接,那么后面会自己断

Java Web编程的主要组件技术——Servlet

参考书籍:<J2EE开源编程精要15讲> Servlet是可以处理客户端传来的HTTP请求,并返回响应,由服务器端调用执行,有一定编写规范的Java类. 例如: 1 package test; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 impo

java导出数据库里的数据至Excel进行数据备份

调用部分: package com.otdrmsys.action; import com.otdrmsys.util.ResultSetToExcel; public class ExcelExport { public static void main(String[] args) { // String fileName = "otdr";//文件名,不带路径,不带.xls后缀 // String [] coloumItems = {"otdr编号",&quo