發送http post請求返回的數據中文亂碼,在網上搜了一下,找到一個相關的資源,結果發現用不了,最後自己試着改了一下,終於解決了這個亂碼的問題。
public static String post(String url, String charset, Map params) throws IOException {
HttpURLConnection conn = null;
OutputStreamWriter out = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
StringBuffer result = new StringBuffer();
try {
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Accept-Charset", charset);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
out = new OutputStreamWriter(conn.getOutputStream(), charset);
out.write(buildQuery(params, charset));
out.flush();
inputStream = conn.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
reader = new BufferedReader(inputStreamReader);
String tempLine = null;
while ((tempLine = reader.readLine()) != null)
result.append(tempLine);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
if (reader != null) {
reader.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (inputStream != null) {
inputStream.close();
}
}
return result.toString();
}
解決方法:
inputStreamReader = new InputStreamReader(inputStream,"UTF-8");