
我需要在几个区域使用loopj的SynchttpClIEnt.当我使用AsynchttpClIEnt时,请求成功返回.当我使用SynchttpClIEnt时,如此处接受的答案所示:How to use loopJ SyncHttpClient for synchronous calls?,我在onFailure中遇到了一个断点. statusCode为0,errorResponse为null,throwable为java.io.IOException:未处理的异常:null.
这是相关的代码.我再次使用Async时效果很好:
@R_404_5554@Test.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) {// AsynchttpClIEnt httpClIEnt = new AsynchttpClIEnt(); SynchttpClIEnt httpClIEnt = new SynchttpClIEnt(); httpClIEnt.get("http://10.0.1.6:3000/home/test_endpoint", new JsonhttpResponseHandler() { @OverrIDe public voID onSuccess(int statusCode, header[] headers, JsONObject response) { String stringResponse = response.toString(); } @OverrIDe public voID onFailure(int statusCode, header[] headers, Throwable throwable, JsONObject errorResponse) { String error = errorResponse.toString(); } }); String temp = "got here"; } });我正在使用编译’com.loopj.androID:androID-async-http:1.4.9′
解决方法:
当我点击这个时我做了一些调试,我发现loopj正在吃以下异常:
androID.os.networkonmainthreadException我无法提供详细的堆栈跟踪,因为这个异常似乎没有正确记录(由于某些原因,logcat根本没有提取它)
但是,它位于这里:
AsynchttpRequest.makeRequestWithRetrIEs(AsynchttpRequest.java:203)我一直在运行我的代码:
Handler handler = new Handler();Runnable r = new Runnable(){ public voID run(){ SynchttpClIEnt clIEnt .... clIEnt.get(.....); // hit error here }};正如您所看到的,我碰巧在Handler.post()方法中运行我的SynchttpClIEnt,但显然实现不算作(非主线程上的网络)
修复它的关键是使用了mikeorr85的代码所包含的“新线程(…)”.像这样……
new Thread(Runnable r = new Runnable(){ public voID run(){ SynchttpClIEnt clIEnt .... clIEnt.get(.....); // hit error here }}).start(); 总结 以上是内存溢出为你收集整理的android – 使用loopj SyncHttpClient时的IOException全部内容,希望文章能够帮你解决android – 使用loopj SyncHttpClient时的IOException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)