专题1234导航

求助一个关于OKhttp的问题

来源:互联网
发表时间:2017/4/17 16:13:07
责任编辑:李志喜
字体:
为了帮助网友解决“求助一个关于OKhttp的问题”相关的问题,mr007通过互联网对“求助一个关于OKhttp的问题”相关的解决方案进行了整理,用户详细问题包括:我用Okhttp请求数据,数据获得了但是没有传到类里,请问这个怎么解决

  protected void loadData() {
        OkhttpUtil.sendOKHttpRequest(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                 responseData=response.body().string();
               parseJSONWithJSONObject(responseData);
                Log.d("DomesticFragment","onResponse"+responseData);


            }


        });
}
 private void parseJSONWithJSONObject(String responseData) {
        try {
            JSONArray jsonArray=new JSONArray(responseData);
            Log.d("jsonArray", jsonArray.toString());
            for (int i=0;i<jsonArray.length();i++){
                JSONObject jsonObject=jsonArray.getJSONObject(i);
                Log.d("DomesticFragment","Array"+jsonArray.toString());
                Log.d("DomesticFragment","object"+jsonObject.toString());
                String subject=jsonObject.getString("subject");
                String abs=jsonObject.getString("abstract");
                String author=jsonObject.getString("author");
             
                DomesdicInfo info=new DomesdicInfo(subject,author,abs,
                        "aa","bb","cc");
                mList.add(info);             
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

在上面的代码中,Log都已经获得了数据,可是数据就是无法获得,请问怎么解决,具体解决方案如下:
解决方案1:
是不是解析出问题了,最好把json打印出来看看
解决方案2:
JSon解析没有问题,打过log是有数据的,现在问题是我把数据请求解析之后,没有办法获取到数据。
解决方案3:
@幻影宇寰 我这里能够找到问题就是http的数据并没有获取到
解决方案4:
你说json获取没问题,那说明请求是没问题的,至于数据没获取到,可能是异步问题导致的,你需要等响应数据得到后用Handler通知主线程进行数据刷新
解决方案5:
@幻影宇寰 

 
public class OkhttpUtil {
    public static void sendOKHttpRequest(final String address, final Callback callback){
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient client=new OkHttpClient();
                Request request=new Request.Builder()
                        .url(address).build();
               client.newCall(request).enqueue(callback);

            }
        }).start();


    }
}

你好,这是我写的工具类,可以摆脱你帮我看看是哪里漏了什么方法吗?
解决方案6:
引用 4 楼 xiaoyaoyou1212 的回复:
你说json获取没问题,那说明请求是没问题的,至于数据没获取到,可能是异步问题导致的,你需要等响应数据得到后用Handler通知主线程进行数据刷新

我最后查了下控制台,有一个can't not get spooler的错误
解决方案7:
can't not get spooler这个错误提示不能在子线程打印程序,那个请求可以直接这样写

public class OkhttpUtil {
    public static void sendOKHttpRequest(final String address, final Callback callback){
            OkHttpClient client=new OkHttpClient();
            Request request=new Request.Builder().url(address).build();
           client.newCall(request).enqueue(callback);
    }
}
解决方案8:
引用 7 楼 xiaoyaoyou1212 的回复:
can't not get spooler这个错误提示不能在子线程打印程序,那个请求可以直接这样写

public class OkhttpUtil {
    public static void sendOKHttpRequest(final String address, final Callback callback){
            OkHttpClient client=new OkHttpClient();
            Request request=new Request.Builder().url(address).build();
           client.newCall(request).enqueue(callback);
    }
}


已经改过了,改了之后依然报了这个错误。我现在是在是一脸懵逼,
解决方案9:
你判定下那个数据处理是不是在主线程,如果不是,使用如下方式转到主线程试试

runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        
                    }
                });
www.xue163.com true http://www.xue163.com/588880/39215/392155010.html report 8758 求助一个关于OKhttp的问题:解决方案1:是不是解析出问题了,最好把json打印出来看看解决方案2:JSon解析没有问题,打过log是有数据的,现在问题是我把数据请求解析之后,没有办法获取到数据。解决方案3:@幻影宇寰 我这里能够找到问题就是http的数据并没有获取到解决方案4:你说json获取没问题,那说明请求是没问题的,至于数据没获取到,可能是异步问题导致的,你需要等响应数据得到后用Handler通知主线程进行数据刷新解决方案5:@幻影宇寰  public class Okhttp...
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. mr007 版权所有
京ICP备10044368号-1 京公网安备11010802011102号