用SAXReader解析从HttpURLConnection获取的InputStream出现编码处错误!
public Document sendRequest(String number) {
RequestXml rx = new RequestXml();
HttpURLConnection huc;
URL url;
new OutputFormat();
OutputFormat of = OutputFormat.createPrettyPrint();
of.setEncoding("GB2312");
try {
url = new URL(prop.getProperty("LBSServerURL"));
huc = (HttpURLConnection) url.openConnection();
huc.setRequestProperty("content-type", "text/xml");
huc.setRequestMethod("POST");
huc.setDoInput(true);
huc.setDoOutput(true);
OutputStream os = huc.getOutputStream();
XMLWriter xmlWriter = new XMLWriter(os, of);
xmlWriter.write(rx.initXml(number));
os.flush();
os.close();
xmlWriter.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(huc
.getInputStream()));
SAXReader reader= new SAXReader();
reader.setEncording("GB2312");//不管指定哪种格式都有问题
Document d=reader.read(rd);
System.out.println(d.asXML());//就是调用asXML出现Invalid byte 1 of 1-byte UTF-8 sequence异常;另:当服务器返回一个错误的XML文档信息的时候,这个方法不会出错,随便设置哪种格式都不会出错。
rd.close();
huc.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println(e.getMessage());
}
return d;
}