备注

在 java tool util 工具类 中已存在

HttpTool.java

该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用.

package kingtool;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
/**
* http post发送工具
* @author King
*
*/
public class HttpTool {
public static void main(String[] args) throws Exception {
String requestUrl = "http://192.168.1.2/httpserver";
String requestData = readStringFromFile("C:\\Users\\King\\Desktop\\connectANSI.xml","GBK");//有乱码,请修改指定编码
//_________________________________________________________________________________________
String returnData=HttpTool.sendRequestData("telesales",requestData, requestUrl,"GBK","GBK", ,);//大家最终只要使用这一句代码就可调用
//_________________________________________________________________________________________
} /**
* 发送报文
*
* @param appName 应用系统英文名
* @param requestData 请求报文
* @param urlStr 请求地址
* @param connectionTimeout 链接超时时间 1000代表 1秒
* @param readTimeout 读取超时时间 1000代表1秒
* @return
* @throws IOException
* @author King
*/
public static String sendRequestData(String appName,String requestData, String urlStr,String sendEncoding,String recvEncoding, int connectionTimeout,int readTimeout) throws IOException{
URL url = null;
HttpURLConnection conn = null;
ByteArrayOutputStream byteOut = null;
BufferedReader readInfo = null;
StringBuffer strBuilder=new StringBuffer();
OutputStream out = null;
try {
System.out.println("请求时间:【"+new Date()+"】");
System.out.println("请求地址:【"+urlStr+"】");
System.out.println("请求报文:【"+requestData+"】");
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("SOAPAction", "\"\"");
conn.setRequestProperty("Accept", "application/soap+xml, application/dime, multipart/related, text/*");
//如果没有下面这一行代码,服务器端可以通过request.getParameter()和request.getInputStream()都接收到相同信息
//conn.setRequestProperty("content-type", "text/xml;charset=GBK");
//如果 有上面这一行代码,服务器端仅能通过request.getInputStream()接收信息
conn.setRequestProperty("User-Agent", "Axis/1.4");
conn.setRequestProperty("Cache-Control", "no-cache");
conn.setRequestProperty("appName", appName);//各系统需要设置应用系统名 appName,如电销为telesales
conn.setUseCaches(false); //忽略缓存
conn.setDoOutput(true); //使用 URL 连接进行输出
conn.setDoInput(true); //使用 URL 连接进行输入
conn.setConnectTimeout(connectionTimeout);//链接超时
conn.setReadTimeout(readTimeout);//读取超时
conn.connect();//建立链接
byteOut = new ByteArrayOutputStream();
byteOut.write(requestData.getBytes(sendEncoding));//以指定编码发送,如果有乱码,修改之
byte[] buf = byteOut.toByteArray();
out = conn.getOutputStream();
out.write(buf);
out.flush();
if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) {//正确返回
readInfo = new BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),recvEncoding));//以指定编码读取返回信息,如果有乱码,修改之
String line = null;
while ((line = readInfo.readLine()) != null) {
strBuilder.append(line);
}
} else {//没有正确返回
readInfo = new BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),recvEncoding));//以指定编码读取返回信息,如果有乱码,修改之
System.out.println("出现异常,返回报文:【"+readInfo+"】");
throw new IOException("url请求出现问题,返回编码:" + conn.getResponseCode());
}
System.out.println("返回时间:【"+new Date()+"】");
System.out.println("返回报文:【"+strBuilder.toString()+"】");
} catch (UnsupportedEncodingException e) {
throw e;
} catch (MalformedURLException e) {
throw e;
} catch (IOException e) {
throw e;
}finally {
try{
if (readInfo != null) {
readInfo.close();
}
if (byteOut != null) {
byteOut.close();
}
if (out != null) {
out.close();
}
if (conn != null) {
conn.disconnect();
}
}catch(Exception e){
System.out.println("关闭链接出错!"+e.getMessage());
} }
return strBuilder.toString();
} /**
*
* @param filePath 文件绝对路径
* @param encoding 读取文件的编码
* @return
* @author King
* @throws Exception
*/
public static String readStringFromFile(String filePath,String encoding) {
File file = new File(filePath);
System.out.println("文件 "+filePath+"存在与否?: "+ file.exists()+"\n");
String tempLine = null;
String retStr = "";
InputStreamReader isr = null;//way1:
// FileReader fr = null;//way2
StringBuilder sb = new StringBuilder();
try {
if(file.exists()){
isr = new InputStreamReader(new FileInputStream(file),encoding);//way1:
// fr = new FileReader(file);//way2
BufferedReader br = new BufferedReader(isr);//way1:
// BufferedReader br = new BufferedReader(fr);;//way2:
tempLine = br.readLine();
while( tempLine != null ){
sb.append(tempLine);
tempLine = br.readLine();
}
retStr = sb.toString();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
if(isr!=null)
isr.close();
}catch(Exception e){
e.printStackTrace();
}
}
System.out.println("读到的文件内容如下:");
System.out.println(retStr+"\n");
return retStr;
}
}

HttpTool.java(在java tool util工具类中已存在) 暂保留的更多相关文章

  1. Java集合(1):Collections工具类中的static方法

    与Arrays一样,Collections类中也有一些实用的static方法. (1) 排序操作 reverse(List list):反转指定List集合中元素的顺序 shuffle(List li ...

  2. Java操作属性文件之工具类

    最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...

  3. Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用

    1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...

  4. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  5. Java:集合,Collections工具类用法

    Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...

  6. Java加载Properties配置文件工具类

    Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...

  7. 【转】Java压缩和解压文件工具类ZipUtil

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  8. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

  9. Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

随机推荐

  1. 01-C#入门(分支控制语句)

    说实话,<C#入门经典>这本书对入门的同学来说真的太棒了,先不说内容如何,就作者先以控制台(命令行)调试程序的方法,就能够最大限度地让你关注学习的内容,而不是花哨的界面调试. 现在学习是下 ...

  2. XE6 & IOS开发之开发者账号、苹果证书(1):关于开发者账号

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 关于苹果开发者账号, 注 ...

  3. Why is Visual Studio 2015 not able to find or open PDB files?

    first change parameters, Tools->Options->Debugging->Symbols->Microsoft Symbol Server, ye ...

  4. R&S学习笔记(二)

    1.OSPF:路由条目1万多条.收敛时间1s:ISIS:路由条目可以达2万多条,收敛时间50ms().ISIS在链路层上面,不依赖IP这层,这样给了它很多可能.比如IPv4, IPv6路由的混合承载, ...

  5. Jmeter beanshell 生成手机号加密签名

    首先自己写一个根据手机号生成加密字符串的函数,并且导出为Jar包,函数具体内容省略,网上有很多 将Jar包放到Jmeter lib\ext目录下面,然后在user.properties里面把路径加进去 ...

  6. SQLServer 事务隔离级别

    MSSQL 事务级别 分类: 数据库2012-12-28 11:17 1050人阅读 评论(0) 收藏 举报 事务 级别 等级优化数据库 一个系统项目做大了,就会遇到性能问题.数据库的优化将是解决性能 ...

  7. java知识点

    一.面向对象的五大基本原则: 1.单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化.单一职责原则可以看做是低耦合.高内聚在面向 ...

  8. vi、vim 查找替换

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  9. c语言自定义BOOL函数

    C语言中没有BOOL类型变量,它是C++独有的,由于使用BOOL类型可以使代码更具有可读性,很多编程者都在C中自己定义了类似的应用,一般方法有两种: 第一种:采用宏定义方式 typedef int B ...

  10. Datasnap Image

    delphi用,不能与java.c#互相识别. procedure TServerMethods.UpdateDoc(ItemID : integer; doc : TStream); delphi用 ...