使用JavaSocket编写发送HTTP_POST请求的工具类 (六)

2014-11-24 11:39:21 · 作者: · 浏览: 55
if(b >= 0){ //ENG ASCII
sb.append(String.format("%02X ", b));
if(b<32 || b>126){ //不可见字符
sb2.append(" ");
}else{
sb2.append((char)b);
}
}else{ //CHA ASCII
if(j == i+15){ //汉字前半个字节
sb.append(String.format("%02X ", data[j]));
chineseCutFlag = true;
String s = new String(data, j, 2);
sb2.append(s);
}else if(j == i&&chineseCutFlag){ //后半个字节
sb.append(String.format("%02X ", data[j]));
chineseCutFlag = false;
String s = new String(data, j, 1);
sb2.append(s);
}else{
sb.append(String.format("%02X %02X ", data[j], data[j + 1]));
String s = new String(data, j, 2);
sb2.append(s);
j++;
}
}
}else{
sb.append(" ");
}
}
sb.append("| ");
sb.append(sb2.toString());
}
sb.append("\r\n------------------------------------------------------------------------");
return sb.toString();
}
}

package com.jadyer.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import java.io.UnsupportedEncodingException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* 使用JavaSocket编写发送HTTP_POST请求的工具类
* @see 与之类似的还有一个HttpClientUtil工具类
* @see 地址为http://blog.csdn.net/jadyer/article/details/8087960
* @see 还有一个使用Java原生API编写发送HTTP_POST请求的工具类
* @see 地址为http://blog.csdn.net/jadyer/article/details/8637228
* @create Apr 4, 2013 8:37:44 PM
* @author 玄玉
*/
public class HTTPUtil {
private HTTPUtil(){}

/**
* 发送HTTP_POST请求
* @see 本方法默认的连接超时和读取超时均为30秒
* @see 请求参数含有中文时,亦可直接传入本方法中,本方法内部会自动根据reqCharset参数进行URLEncoder.encode()
* @see 解码响应正文时,默认取响应头[Content-Type=text/html; charset=GBK]字符集,若无Content-Type,则使用UTF-8解码
* @param reqURL 请求地址
* @param reqParams 请求正文数据
* @param reqCharset 请求报文的编码字符集(主要针对请求参数值含中文而言)
* @return reqMsg-->HTTP请求完整报文,respMsg-->HTTP响应完整报文,respMsgHex-->HTTP响应的原始字节的十六进制表示
*/
public static Map sendPostRequest(String reqURL, Map reqParams, String reqCharset) {
StringBuilder reqData = new StringBuilder();
for (Map.Entry entry : reqParams.entrySet()) {
try {
reqData.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), reqCharset)).append("&");
} catch (UnsupportedEncodingException e) {
System.out.println("编码字符串[" + entry.getValue() + "]时发生异常:系统不支持该字符集[" + reqCharset + "]");
reqData.append(entry.getKey()).append("=").append(entry.getValu