HttpTool.java(在java tool util工具类中已存在) 暂保留
备注
在 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工具类中已存在) 暂保留的更多相关文章
- Java集合(1):Collections工具类中的static方法
与Arrays一样,Collections类中也有一些实用的static方法. (1) 排序操作 reverse(List list):反转指定List集合中元素的顺序 shuffle(List li ...
- Java操作属性文件之工具类
最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...
- Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用
1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...
- java基础37 集合框架工具类Collections和数组操作工具类Arrays
一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...
- Java:集合,Collections工具类用法
Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...
- Java加载Properties配置文件工具类
Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...
- 【转】Java压缩和解压文件工具类ZipUtil
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- Java汉字转成汉语拼音工具类
Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
随机推荐
- Linux JDK 安装及卸载 http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html
参考:http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html
- linux mutext spinlock 性能分析
http://www.parallellabs.com/2010/01/31/pthreads-programming-spin-lock-vs-mutex-performance-analysis/ ...
- div,li,span自适应宽度换行问题
<ul class="news"> <li><span class="lbl">右对齐,换行显示的解决方法</s ...
- shell 命令集
shell 常用知识点--------------------------------------- sed 用法 http://www.cnblogs.com/edwardlost/archive/ ...
- W5200移植W5500驱动教程
说明,移植例程为我按照这个教程移植的例程,测试通过.工程模板为我经常使用的一个w5500模板,可以在里面直接添加文件编程.1. 将driver文件夹中W5500文件夹和所有.c文件复制到工程/sour ...
- MVC @Html.DropDownList()绑定值
Controller中: ViewBag.modules = new SelectList(集合.ToList(), "下拉框键", "下拉框值"); View ...
- js拖动层原形版
脚本文件: function JzDrag(moveDivId, moveDivHandle) { // var me = this; this.M = false; //是否在移动对象 this.D ...
- jquery append 方法应用
<!DOCTYPE html><html><head><meta charset="utf-8"><title>< ...
- JAVA获取客户端IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- jsp+tomcat+mysql+sevlet+javabean配置过程
在配置jsp开发环境的过程中会碰到不少问题,感谢网上的许多前辈的经验总结,作者cl41的JSP连接Mysql数据库攻略和作者Saulzy的MySQL学习笔记等文章对我来说简直是雪中送碳,为了帮助象我一 ...