求助一个关于OKhttp的问题

有生之莲萨摩耶 2017-04-13 08:45:33
我用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都已经获得了数据,可是数据就是无法获得,请问怎么解决
...全文
267 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 9 楼 xiaoyaoyou1212 的回复:
你判定下那个数据处理是不是在主线程,如果不是,使用如下方式转到主线程试试

runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        
                    }
                });
谢谢了,我已经解决问题了,最后是用Handler解决的,是因为数据处理再子线程没有传到主线程上
幻影宇寰 2017-04-17
  • 打赏
  • 举报
回复
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);
    }
}
幻影宇寰 2017-04-17
  • 打赏
  • 举报
回复
你判定下那个数据处理是不是在主线程,如果不是,使用如下方式转到主线程试试

runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        
                    }
                });
  • 打赏
  • 举报
回复
引用 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);
    }
}
已经改过了,改了之后依然报了这个错误。我现在是在是一脸懵逼,
  • 打赏
  • 举报
回复
引用 4 楼 xiaoyaoyou1212 的回复:
你说json获取没问题,那说明请求是没问题的,至于数据没获取到,可能是异步问题导致的,你需要等响应数据得到后用Handler通知主线程进行数据刷新
我最后查了下控制台,有一个can't not get spooler的错误
  • 打赏
  • 举报
回复
@幻影宇寰

 
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();


    }
}
你好,这是我写的工具类,可以摆脱你帮我看看是哪里漏了什么方法吗?
幻影宇寰 2017-04-13
  • 打赏
  • 举报
回复
你说json获取没问题,那说明请求是没问题的,至于数据没获取到,可能是异步问题导致的,你需要等响应数据得到后用Handler通知主线程进行数据刷新
  • 打赏
  • 举报
回复
@幻影宇寰 我这里能够找到问题就是http的数据并没有获取到
  • 打赏
  • 举报
回复
JSon解析没有问题,打过log是有数据的,现在问题是我把数据请求解析之后,没有办法获取到数据。
幻影宇寰 2017-04-13
  • 打赏
  • 举报
回复
是不是解析出问题了,最好把json打印出来看看

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧