我获取响应报文的方式很常规,从输入流中获取,写入字符串。
这是我获取的响应报文
不知道为什么我想要的响应体前面会出现这样一段php代码
难道 这个就是 bom头没去?可是我在dw里面把这个去掉了。
现在还有点异常的地方:之前我用花生壳内网穿透,用外网访问我写的服务器文件,是可以的,但是现在我用手机自带的浏览器打开不了了(在手机qq里面的浏览器可以打开),如果手机连接局域网(内网,通过ip地址访问)下,还是可以正常访问的。
if (httpResponse.getStatusLine().getStatusCode() == 200) {
                    //获取返回字符串
                   StringBuilder builder=new StringBuilder();
                    BufferedReader buffer =new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
                for(String s=buffer.readLine();s!=null;s=buffer.readLine())
                {
                    builder.append(s);
                }
                    strResult=builder.toString().replaceAll("<!doctype html><html><head><meta charset=\"utf-8\"><title>无标题文档</title></head><body></body></html>","");     //将这个去掉 获得的字符串是符合json结构的
                    System.out.println(strResult);
                    JSONObject jsonObject=new JSONObject(strResult);
                    warn=jsonObject.getString("warn");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
这个是可以正常获取json数据的 代码  我就是想知道 在我json数据前面的那一段是什么东西?难道属于 我的响应体的一部分?

解决方案 »

  1.   

    这是你自己的接口响应写得有问题, 他响应了一个html页面.
    如果你说某些环境下可以, 那么就是兼容性做得不好.
    但肯定是服务器返回的问题.
    多抓包看.  
      

  2.   

    那这个兼容性怎么改进,更换连接方式,不用http?还是说换个服务器。
      

  3.   

    这个是服务器返回了网页源码,你读取数据是没问题的,可能是服务器的问题吧,正常返回json作为api的是不会返回网页头的
      

  4.   

    你的url 有问题
      

  5.   

    如果接口中只是说返回json,那html信息就可能是接口处理中搞错了,添加了html代码。
    觉得应该是接口返回数据格式拼错了,让写接口的自己查一下,再处理。
      

  6.   

    返回的结果用html格式保存在本地  打开就是自己要的jSON。我遇到过类似的问题,后台是PHP,写的调试代码忘记注释,就有可能造成这种问题。总之提醒后台不要在返回这种数据给你就是了。