Android / OkHttp - client.newCall(request).execute()总是返回异常

时间:2016-01-20 14:08:01

标签: android request okhttp

我必须制作一个Android应用程序项目。起初,我尝试使用HttpURLConnection但它没有用。所以在与朋友讨论后,我尝试使用OkHttp。我总是得到一个例外的" answers = client.newCall(request).execute();"。经过长时间的搜索,我只是尝试这个代码,这是" https://github.com/square/okhttp/wiki/Recipes"的教程。 而且.....它也不起作用! 我的问题是,真正发生了什么?我目前正在Android Studio 1.5.1下开发4.0.3应用程序。我还添加了以下两个依赖项:

CONDITION

2 个答案:

答案 0 :(得分:0)

{ANSWER} 我终于尝试使用像Selvin这样的多线程编程,它运行良好所以解决方案是打开另一个线程

In [119]: df.groupby(['grpno.'], as_index=False)[['count percent']].max()
Out[119]: 
   grpno.  count percent
0       1    14.78
1       2     0.00
2       3     8.80
3       4    59.00
4       5     0.00
5       6     0.00

df1 = df.groupby(['grpno.'], as_index=False)[['count percent']].max()
df1.columns = df1.columns[:-1].tolist() + ['MaxOfcount percent']

In [130]: df1
Out[130]: 
   grpno.  MaxOfcount percent
0       1               14.78
1       2                0.00
2       3                8.80
3       4               59.00
4       5                0.00
5       6                0.00

答案 1 :(得分:0)

很有可能,由于Honeycomb,主线程中的网络操作受到限制。因此,当您已经在后台线程中时,调用execute()方法非常有用。但是,如果您在主线程中,那么enqueue()将很有帮助,因为它将在后台线程中处理网络请求并在主线程中返回响应。在这种情况下,您只需要传递一个回调即可获得响应。

正如您提到的,使用Okhttp是您朋友的建议。我也建议您使用Retrofit。这将使您的代码更美观,更可维护,并代表您处理线程。在后台,它使用Okhttp。更重要的是,自version 2.6.0起,您可以在Coroutines的帮助下感受到同步的体验。