使用http请求发送json,本地是没有问题,测试环境的时候出现了中问乱码
这个是http请求的接口
/**
* 发送Http post请求
*
* @param xmlInfo
* json转化成的字符串
* @param URL
* 请求url
* @return 返回信息
*/
public static String doHttpPost(String xmlInfo, String URL) {
System.out.println("发起的数据:" + xmlInfo);
byte[] xmlData = xmlInfo.getBytes();
InputStream instr = null;
java.io.ByteArrayOutputStream out = null;
try {
java.net.URL url = new URL(URL);
URLConnection urlCon = url.openConnection();
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setUseCaches(false);
urlCon.setRequestProperty("content-Type", "application/json");
urlCon.setRequestProperty("charset", "utf-8");
urlCon.setRequestProperty("Content-length",
String.valueOf(xmlData.length));
System.out.println(String.valueOf(xmlData.length));
DataOutputStream printout = new DataOutputStream(
urlCon.getOutputStream());
printout.write(xmlData);
printout.flush();
printout.close();
instr = urlCon.getInputStream();
byte[] bis = IOUtils.toByteArray(instr);
String ResponseString = new String(bis, "UTF-8");
if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {
System.out.println("返回空");
}
System.out.println("返回数据为:" + ResponseString);
return ResponseString;
} catch (Exception e) {
e.printStackTrace();
return "0";
} finally {
try {
out.close();
instr.close();
} catch (Exception ex) {
return "0";
}
}
}
然后发现是在转byte的时候出现错误,把byte[] xmlData = xmlInfo.getBytes(); 改为 **byte[] xmlData = xmlInfo.getBytes(“utf-8”);**这样上测试环境就没有问题咯 HttpTool.doHttpPost2( JSONArray.fromObject(list).toString(),url);是调用,然后list转json的时候实体类里面有Date类型转不了在报错我也没有深究就改为字符串咯,有时间再去研究一下。