Evernote / evernote-sdk-android

Evernote SDK for Android
428 stars 168 forks source link

TTransportException on listNotebooks() #56

Open tfrenken opened 8 years ago

tfrenken commented 8 years ago

Hi,

I hope the Android SDK is still developed since I got a problem with it.

I am already able to login sucessfully with my app but whenever I try to make a connection to retrieve information I get an error. For example, when calling noteStoreClient.listNotebooks(); after logging in, I get the following error:

06-05 14:38:17.710 29267-29267/de.wocheplaner W/System.err: com.evernote.thrift.transport.TTransportException: android.os.NetworkOnMainThreadException 06-05 14:38:17.715 29267-29267/de.wocheplaner W/System.err: at com.evernote.client.conn.mobile.TAndroidTransport.flush(TAndroidTransport.java:136) 06-05 14:38:17.715 29267-29267/de.wocheplaner W/System.err: at com.evernote.edam.notestore.NoteStore$Client.send_listNotebooks(NoteStore.java:332) 06-05 14:38:17.715 29267-29267/de.wocheplaner W/System.err: at com.evernote.edam.notestore.NoteStore$Client.listNotebooks(NoteStore.java:321) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at com.evernote.client.android.asyncclient.EvernoteNoteStoreClient.listNotebooks(EvernoteNoteStoreClient.java:145) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at de.wocheplaner.MainActivity.refreshRecipes(MainActivity.java:183) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at de.wocheplaner.MainActivity.onLoginFinished(MainActivity.java:160) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at com.evernote.client.android.login.EvernoteLoginFragment.onResult(EvernoteLoginFragment.java:150) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at java.lang.reflect.Method.invoke(Native Method) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at net.vrallev.android.task.TargetMethodFinder.invoke(TargetMethodFinder.java:110) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at net.vrallev.android.task.TargetMethodFinder.invoke(TargetMethodFinder.java:102) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at net.vrallev.android.task.TaskExecutor.postResultNow(TaskExecutor.java:171) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at net.vrallev.android.task.TaskExecutor$TaskRunnable$1.run(TaskExecutor.java:236) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at android.os.Handler.handleCallback(Handler.java:739) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at android.os.Looper.loop(Looper.java:148) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at java.lang.reflect.Method.invoke(Native Method) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 06-05 14:38:17.716 29267-29267/de.wocheplaner W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 06-05 14:38:17.717 29267-29267/de.wocheplaner W/System.err: Caused by: android.os.NetworkOnMainThreadException 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:688) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at okio.Okio$2.read(Okio.java:137) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at okio.AsyncTimeout$2.read(AsyncTimeout.java:211) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at okio.RealBufferedSource.exhausted(RealBufferedSource.java:60) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.internal.http.HttpConnection.isReadable(HttpConnection.java:155) 06-05 14:38:17.722 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.Connection.isReadable(Connection.java:235) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.OkHttpClient$1.isReadable(OkHttpClient.java:91) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:350) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.Call.getResponse(Call.java:273) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:230) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:201) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.squareup.okhttp.Call.execute(Call.java:81) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: at com.evernote.client.conn.mobile.TAndroidTransport.flush(TAndroidTransport.java:127) 06-05 14:38:17.723 29267-29267/de.wocheplaner W/System.err: ... 18 more

Currenty, after some investigation I assume that this error may be related to the deprecation of org.apache.http package after android 23. However, all suggested solution (using useLibrary 'org.apache.http.legacy') did not make any difference.

Any chance for help?

Best regards, Thomas

tfrenken commented 8 years ago

OK, got it myself. listNotebooks() performs a network operation which is not allowed on the main thread since API > 23. Therefore, listNotebooks() cannot be called on the main thread.

Shifted it to a AsyncTask and all works fine.