package com.ivchat.test.propertysystem.util;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

import javax.imageio.stream.FileImageInputStream;

public class HttpRequstTestUtil {

public static String send(String reqUrl, String jsonData) {
System.out.println("请求数据:"+reqUrl);
System.out.println(jsonData);
// jsonData = URLEncoder.encode(jsonData, "utf-8");
HttpURLConnection urlConn = null;
OutputStream out = null;
InputStreamReader in = null;
BufferedReader bufferedReader = null;
String result = "";
try {
URL url = new URL(reqUrl);
// 打开一个HttpURLConnection连接
urlConn = (HttpURLConnection) url.openConnection();
// 设置连接超时时间
urlConn.setConnectTimeout(5 * 1000);
// Post请求必须设置允许输出
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
// Post请求不能使用缓存
urlConn.setUseCaches(false);
// 设置为Post请求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
urlConn.setRequestProperty("Accept-Charset", "UTF-8");
urlConn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// 开始连接
urlConn.connect();
// 发送请求参数
if (jsonData != null) {
out = urlConn.getOutputStream();
out.write(jsonData.getBytes("UTF-8"));
out.flush();
}
// 判断请求是否成功
in = new InputStreamReader(urlConn.getInputStream());
bufferedReader = new BufferedReader(in);
StringBuffer strBuffer = new StringBuffer();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
strBuffer.append(line);
}
result = strBuffer.toString();
System.out.println("-----返回结果-----");
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (urlConn != null) {
urlConn.disconnect();
}
} catch (Exception e2) {
e2.printStackTrace();
}

}

return result;
}

public static String sendToMall(String reqUrl, String jsonData) {
System.out.println("请求数据:");
System.out.println(jsonData);
// jsonData = URLEncoder.encode(jsonData, "utf-8");
HttpURLConnection urlConn = null;
OutputStream out = null;
InputStreamReader in = null;
BufferedReader bufferedReader = null;
String result = "";
try {
URL url = new URL(reqUrl);
// 打开一个HttpURLConnection连接
urlConn = (HttpURLConnection) url.openConnection();
// 设置连接超时时间
urlConn.setConnectTimeout(5 * 1000);
// Post请求必须设置允许输出
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
// Post请求不能使用缓存
urlConn.setUseCaches(false);
// 设置为Post请求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
urlConn.setRequestProperty("Accept-Charset", "UTF-8");
urlConn.setRequestProperty("Content-Encoding", "UTF-8");
urlConn.setRequestProperty("Content-Type","application/x-www.form-urlencoded");
// 开始连接
urlConn.connect();
// 发送请求参数
if (jsonData != null) {
out = urlConn.getOutputStream();
out.write(jsonData.getBytes("UTF-8"));
out.flush();
}
// 判断请求是否成功
in = new InputStreamReader(urlConn.getInputStream());
bufferedReader = new BufferedReader(in);
StringBuffer strBuffer = new StringBuffer();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
strBuffer.append(line);
}
result = strBuffer.toString();
System.out.println("-----返回结果-----");
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (urlConn != null) {
urlConn.disconnect();
}
} catch (Exception e2) {
e2.printStackTrace();
}

}

return result;
}

public static String upFile(String reqUrl, String name, Map<String,String> map) {
if(map.size() > 0){
String end = "\r\n";
String twoHyphens = "--";
String boundary = "---------------------------823928434";
try {
URL url = new URL(reqUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setInstanceFollowRedirects(true);
httpURLConnection.setRequestProperty("Charset", "UTF-8");
httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());

for (Map.Entry<String, String> entry : map.entrySet()) {
dos.writeBytes(twoHyphens + boundary + end);
dos.writeBytes("Content-Disposition: form-data; name="+name+"; filename="+entry.getKey() + end);
dos.writeBytes(end);
dos.write(image2byte(entry.getValue()));
dos.writeBytes(end);
}

dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
dos.flush();

// 读取服务器返回结果
InputStream is = httpURLConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String result = br.readLine();
System.out.println(result);
is.close();
return result;

} catch (Exception e) {
e.printStackTrace();
}
}
return "";
}

public static void upload(String reqUrl, File file) throws Exception {
System.out.println("请求数据:");
HttpURLConnection urlConn = null;
OutputStream out = null;
DataInputStream in = null;
BufferedReader bufferedReader = null;
try {
URL url = new URL(reqUrl);
// 打开一个HttpURLConnection连接
urlConn = (HttpURLConnection) url.openConnection();
// 设置连接超时时间
urlConn.setConnectTimeout(5 * 1000);
// Post请求必须设置允许输出
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
// Post请求不能使用缓存
urlConn.setUseCaches(false);
// 设置为Post请求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
urlConn.setRequestProperty("Accept-Charset", "UTF-8");
urlConn.setRequestProperty("contentType", "UTF-8");
// 开始连接
urlConn.connect();
// 发送请求参数
urlConn.setRequestProperty("Content-Type","multipart/form-data");
urlConn.setRequestProperty("filename", file.getName());
out = new DataOutputStream(urlConn.getOutputStream());
in = new DataInputStream(new FileInputStream(file));
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (urlConn != null) {
urlConn.disconnect();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}

}

public static byte[] image2byte(String path){
byte[] data = null;
FileImageInputStream input = null;
try {
input = new FileImageInputStream(new File(path));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
}
catch (FileNotFoundException ex1) {
ex1.printStackTrace();
}
catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}

}

TCP 数据传输工具类的更多相关文章

  1. TCP 服务端接收数据解析工具类

    package com.ivchat.common.util; import java.io.BufferedReader;import java.io.IOException;import java ...

  2. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  3. Mina工具类v1.5

    package com.cucpay.fundswap.util; import java.net.InetSocketAddress; import java.nio.charset.Charset ...

  4. Android开源项目发现--- 工具类网络相关篇(持续更新)

    1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...

  5. Android开源项目大全 - 工具类

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

  6. 项目经验分享——Java常用工具类集合 转

    http://blog.csdn.net/xyw591238/article/details/51678525 写在前面     本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...

  7. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

  8. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第7节: 获取异线程释放的对象

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第七节: 获取异线程释放的对象 上一小节分析了异线程回收对象, 原理是通过与stack关联的WeakOrder ...

  9. linux rsync-文件同步和数据传输工具

    一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync” ...

随机推荐

  1. min-max容斥 hdu 4336 && [BZOJ4036] 按位或

    题解: 之前听说过这个东西但没有学 令$max(S)$表示S中编号最大的元素,$min(S)$表示编号中最小的元素 $$max(S)=\sum{T \in S} {(-1)}^{|T|+1} min( ...

  2. James Munkres Topology: Theorem 19.6

    Theorem 19.6 Let \(f: A \rightarrow \prod_{\alpha \in J} X_{\alpha}\) be given by the equation \[ f( ...

  3. [转]Windows 安装Kafka

    来源:https://www.cnblogs.com/liuyuhua/p/5329926.html https://www.cnblogs.com/xinlingyoulan/p/6054361.h ...

  4. k-近邻算法概述

    2.1 k-近邻算法概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 优点:精度高.对异常值不敏感.无数据输入假定. 确定:计算复杂度高.空间复杂度高. 适用数据范围:数值型和标称型. 工 ...

  5. WEB测试重点

    1.功能测试:所实现的功能是否和需求一致:2.界面测试:界面是否美观,风格是否一致,文字内容是否正确:3.链接测试:打开链接速度是否合理:是否链接到正确的页面:是否有空白页面:4.性能测试:系统能支持 ...

  6. [tensorflow]图像处理相关模块的安装(python3中PIL)

    直接上过程图(平台为Anaconda): 默认已经配置完了tensorflow的3.5的环境 我这里已经安装完成 接下来,就可以在python文件中引入模块了 from PIL import Imag ...

  7. Python3面向对象—点和矩形类

    Python类练习 定义一个类 class Point: '''二维坐标系中代表一个点''' pass print('打印Point:{}'.format(Point)) p1 = Point() p ...

  8. Anaconda基础(一)

    目录 Conda常见命令 环境管理 包管理 conda管理 小技巧 Conda常见命令 环境管理 创建环境 conda create -n 环境名 包列表 进入环境 source activate 环 ...

  9. 安装Percona版本的MySQL主从复制

    准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake     //也需要安装gcc-c++,openssl openssl-deve ...

  10. django 创建model(数据库表)失败

    在models.py中创建数据库表   from django.db import models # Create your models here. class Book(models.Model) ...