public static String sendPost(String url, String param) throws Exception{
BufferedReader in = null;
String result = "";
// try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
// 获取URLConnection对象对应的输出流
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
// 发送请求参数
out.write(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
return result;
}
今天在开发过程中,本人在电脑上测试通了之后,打包到一台windows 2008 的服务器上,遇到了请求客户
接口以及响应中文乱码的问题。经过代码审查,修改out对象为 OutputStreamWriter
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); 请求的时候,设置输出流的编码格式,
同样,响应的输入流 in对象改为 in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
这样乱码问题就得到了解决。