本帖最后由 leidazhi 于 2013-09-30 17:05:35 编辑

解决方案 »

  1.   

    楼主创建xml的关键代码贴出来啊
      

  2.   

        public XMLContent(String encoding, InputStream inputStream) {
            try {
                SAXReader saxReader = getSaxReader();
                saxReader.setEncoding(encoding);
                document = saxReader.read(inputStream);
                inputStream.close();
            } catch (Exception e) {
                throw new RuntimeException("Failed to parse xml content:" + e.getMessage());
            }
        }    public XMLContent(InputStream inputStream) {
            try {
                document = getSaxReader().read(inputStream);
                inputStream.close();
            } catch (Exception e) {
                throw new RuntimeException("Failed to parse xml content:" + e.getMessage());
            }
        }调用方式:
    HttpPost httpPost = new HttpPost(urlString);
    HttpProtocolParams.setContentCharset(httpPost.getParams(), "UTF-8");
    HttpProtocolParams.setHttpElementCharset(httpPost.getParams(), "UTF-8");
    ....
    HttpResponse response = httpClient.execute(httpPost);
    return XMLContent(new ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity())));
      

  3.   

    不要用SAXReader.read(InputStream is)这个方法用重载的SAXReader.read(Reader reader);
     XMLContent(String encoding, InputStream inputStream)这个方法改造下public XMLContent(String encoding, InputStream inputStream) {
            try {
                SAXReader saxReader = getSaxReader();
                document = saxReader.read(new InputStreamReader(inputStream,encoding));
                inputStream.close();
            } catch (Exception e) {
                throw new RuntimeException("Failed to parse xml content:" + e.getMessage());
            }
        }
    调用的时候改成
    return new XMLContent("UTF-8",new ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity())));
      

  4.   


    这种方法我试过的,也不行,并且我把输入流转成byte数组,打印出来,在linux和windows下面的结果是一致的,所以问题应该就是发生在saxReader解析xml的时候。
    另外,获取SaxReader的方法是这样的:
    private SAXReader getSaxReader() {
            SAXReader saxReader = new SAXReader();
            saxReader.setEncoding("UTF-8");
            saxReader.setIgnoreComments(true);
            return saxReader;
        }
      

  5.   

    你用的是httpClient的最新版本。你不要把他的内容转成什么字节数组流
    直接return new XMLContent("UTF-8",response.getEntity().getContent());
      

  6.   

    问题已经解决了,上面的代码全都没有问题,最开始定位错误的地方错了,不是这里,是另外其他转换xml的部分,这里就不写啦。不过还是很感谢你哈^_^,如果有问题还要请教你哟