Android项目中的retrofit.RetrofitError

蒂姆·克鲁奇科夫(Tim Kruichkov)

我是翻新的新手。尝试时,如果没有收到Retrofit.RetrofitError和NetworkOnMainThreadException,就无法发出请求:

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(Url.BASE_URL)
            .build();

    Api api = restAdapter.create(Api.class);
        for(Url url : Url.values()) {
            Journal journal = api.getJournalInfo(url.getUrl());      //Here error
            System.out.println("journal : " + journal.getTitle());
        }

这是班级日记:

public class Journal {
private String title;
private String description;
private String image;

public String getTitle() {
    return title;
}
}

网址类别:

public enum Url {
ECONAMICS("economics.json"),
PHYSICS("mathematical.json"),
MATHEMATICAL("physics.json");

public static final String BASE_URL = "https://dl.dropboxusercontent.com/u/17192683/rest/journals/";

private String url;
Url(String url) {
    this.url = url;
}

public String getUrl() {
    return url;
}
}

界面Api:

public interface Api {
@POST("/{url}")
public Journal getJournalInfo(@Path("url") String urlJournal);
}

完全例外:

03-21 23:44:43.824  22782-22782/tim_kriuchkov.com.task E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{tim_kriuchkov.com.task/tim_kriuchkov.com.task.MainActivity}: retrofit.RetrofitError
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
        at android.app.ActivityThread.access$600(ActivityThread.java:162)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5371)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: retrofit.RetrofitError
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:400)
        at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
        at $Proxy0.getJournalInfo(Native Method)
        at tim_kriuchkov.com.task.MainActivity.onCreate(MainActivity.java:66)  // here error
        at android.app.Activity.performCreate(Activity.java:5122)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)

下一部分例外:

 Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
        at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
        at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
        at java.net.InetAddress.getAllByName(InetAddress.java:214)
        at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
        at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
        at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
        at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
        at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
        at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
        at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:469)
        at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
        at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
        at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
        at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
        at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:505)
        at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
        at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73)
        at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38)
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)

最后一部分:

at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at $Proxy0.getJournalInfo(Native Method)
at tim_kriuchkov.com.task.MainActivity.onCreate(MainActivity.java:66)  // here error

你能帮我吗?我花了很多时间...

索科奎

不是在单独的线程中运行http调用,而是在android os禁止的主要android UI线程上运行(因此例外)。

更改您的Api界面以使用Retrofits Callback这将异步执行您的请求,并在成功或错误时调用回调。

public interface Api {
   @POST("/{url}")
   public void getJournalInfo(@Path("url") String urlJournal, Callback<Journal> callback);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Retrofit从RetrofitError对象获取JSON

来自分类Dev

retrofit.RetrofitError:找不到404

来自分类Dev

RetrofitError异常

来自分类Dev

bug retrofit.RetrofitError:适用于Android的java.io.EOFException

来自分类Dev

由:retrofit.RetrofitError:方法POST必须具有请求正文

来自分类Dev

retrofit.RetrofitError请求网络执行期间发生异常:null

来自分类Dev

改造连接失败将RetrofitError.response返回为null

来自分类Dev

在RetrofitError中捕获错误并将其传递给RoboSpice错误

来自分类Dev

改造获取失败的响应正文(RetrofitError错误)-异步调用

来自分类Dev

在Android项目中使用Retrofit库的高效方法是什么?

来自分类Dev

在Android的Ionic项目中的位置

来自分类Dev

在Android项目中实现凌空

来自分类Dev

android NDK项目中的对齐

来自分类Dev

整个项目中的 Android 错误

来自分类Dev

android项目中的图像变形

来自分类Dev

在Android Studio项目中不能包含JSONParser

来自分类Dev

在Android项目中的哪里放置静态URL?

来自分类Dev

在Android项目中显示Tilemills mbtiles的代码

来自分类Dev

.DS_Store在Android项目中

来自分类Dev

Android Studio项目中的gradle目录

来自分类Dev

Android项目中的环境变量

来自分类Dev

Android将PGP集成到项目中

来自分类Dev

Android:在我的项目中使用ImageLoader?

来自分类Dev

在Android项目中使用开源库

来自分类Dev

Android,检测整个项目中的打开游标

来自分类Dev

无法在Android项目中实施Google Maps

来自分类Dev

在xamarin项目中使用android模块

来自分类Dev

在Android项目中使用StateFlow

来自分类Dev

从Android项目中使用的JAR记录