腾讯微博api 解决中文乱码及解析返回的json数据

在开发腾讯微博应用的时候,发现在用TestCase测试腾讯收索接口的时候,json能正常解析。

但是放入web应用中,发现腾讯传过来的数据出现乱码,用JSONObject也无法解析。

json_data=new String(json_data.getBytes(),"utf-8"); 用utf-8转码时,不能完全转成中文,中间会有??

在网上查了一些资料,要在刚传入时转码,能成功,但现在还不知道为什么。


修改 QHttpClient.java中的httpGet方法


 try {
            /*byte[] b=new byte[2048];//这个是以前的代码
            GZIPInputStream gzin = new GZIPInputStream(response.getEntity().getContent());
            int length=0;
            while((length=gzin.read(b))!=-1){
                responseData.append(new String(b,0,length));
            }
            gzin.close();*/
       
               //在这里进行转码
        BufferedReader br = new  BufferedReader(new InputStreamReader(new GZIPInputStream(response.getEntity().getContent()),"utf-8"));
            String s;
            while ((s = br.readLine()) != null ) {
                    responseData.append(s);
            }
            br.close();
        
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            httpGet.abort();
        }

收索接口测试 
   String format="json";//返回数据的格式
   String contenttype="0";//消息的正文类型(按位使用) 
        String keyword="红旗9"; //搜索关键字(1-128字节) 
        String pagesize="20";//每页大小(1-30个) 
        String page="1";//页码
        String searchtype="0";//搜索类型 
        String msgtype="1";//消息的类型(按位使用) 
        String sorttype ="0";//排序方式 
        String starttime="";//开始时间,用UNIX时间表示(从1970年1月1日0时0分0秒起至现在的总秒数) 
        String endtime="";//结束时间,与starttime一起使用(必须大于starttime) 
        String province="";//发表微博的用户所在的省代码。 
        String city="";//发表微博的用户所在的市代码。 
        String longitue="";//经度,(实数)*1000000 
        String latitude="";//纬度,(实数)*1000000 
        String radius="";//半径(整数,单位米,不大于20000) 
        
        SearchAPI searchAPI= new SearchAPI(oAuth.getOauthVersion());
        
        String json_data = searchAPI.t(oAuth, format, keyword, pagesize, page, contenttype, sorttype, msgtype, searchtype, starttime,endtime, province, city, longitue, latitude, radius);
        System.out.println(">>>> json_data:   "+json_data);
        searchAPI.shutdownConnection();
        

  
 
        JSONObject jsonObject =JSONObject.fromObject(json_data);
        System.out.println("jsonObject:  "+jsonObject);
 
        //获取json数据
        JSONObject data = jsonObject.getJSONObject("data");




        
        List<TMbSessionMas> sessions = new ArrayList<TMbSessionMas>();
        
        
        JSONArray infos = data.getJSONArray("info");
        JSONObject info;
        Iterator it = infos.iterator();
        while(it.hasNext()){
        info = (JSONObject)it.next();
        .......

        sessions.add(session);
        
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值