Tag: kotlin retrofit2

如何获取RxJava 2自定义运算符上的RetroFit请求的URL和方法?

所以我正在尝试为Http请求集成Firebase性能,并像这里显示的那样手动添加它们(步骤9)。 我正在使用Retrofit 2和RxJava 2,所以我有做一个自定义运算符的想法,检查下面的代码: 改造2客户端 @GET(“branch-{environment}/v2/branches”) fun getBranch(@Path(“environment”) environment: String, @Query(“location”) location: String, @Query(“fulfilment_type”) fulfilmentType: String): Single<Response> RxJava呼叫改造客户端 private val client: BranchClient = clientFactory.create(urlProvider.apiUrl) override fun getBranch(postCode: String, fulfilmentType: FulfilmentType): Single { return client .getBranch(environment, postCode.toUpperCase(), fulfilmentType.toString()) .lift(RxHttpPerformanceSingleOperator(URL?, METHOD?)) .map { it.body() } .subscribeIO() //custom Kotlin extension .observeMain() //custom Kotlin extension … } RxJava 2自定义操作员通过电梯: […]

MutableLiveData:在Retrofit / Moshi中分配给ArrayList的问题

我正在用一个Retrofit HTTP调用来调试一个问题。 正在进行的调用是成功的,并且响应似乎与我的POJO(在这种情况下为Kotlin数据类)格式相同。 然而,在将我的POJO列表分配给Response>时似乎有一些脱节。 没有错误,而且我已经证实,答复实际上并不是错误的。 我在这里错过了什么? 你会如何去find我的MutableLiveData和我的响应之间的断开? 发生断开连接的ViewModel。 调用enqueueProjectAPICall()之后,尽管响应是项目列表,但_projects仍然为空: class ProjectBrowserViewModel(): ViewModel(){ private var projectCall: Call private val API_KEY = “whatever” //Mutable private data private val _projects = MutableLiveData<List>() private val _selectedField = MutableLiveData() //Exposed Data val projects: LiveData<List> get() = _projects val selectedField: LiveData get()=_selectedField init { projectCall = BehanceAPI.behanceService.projects(API_KEY) } fun loadProjectsFromField(fieldName: String){ […]

如何使用Retrofit2 API在RecyclerView中显示数据?

首先,我是Android / Java / Kotlin开发的新手。 我正在使用Retrofit2从Udacity API检索数据。 我可以看到Logcat中的响应,但是当我尝试在RecyclerView中显示时,只有一个空白屏幕。 我认为错误是在MainActivity中,但我仍然无能,需要帮助。 我的模型类 class Course(var title: String, var subtitle: String, var key: String, var instructors: List, var expected_learning: String, var required_knowledge: String) class Instructor(var name: String, var bio: String) 我的界面 interface ApiServiceInterface { @GET(“courses”) fun list() : Call } 我的适配器 class CourseAdapter(val listCourses: ArrayList, val context: Context) : […]

RxJava2 +在数据请求时改装黑屏

我正在尝试使用RxJava2和Retrofit2(在Kotlin中)检索某些Api数据时遇到了Android应用程序的问题。 一旦我执行呼叫,屏幕变黑,应用程序不再响应,没有任何日志消息。 我正在使用的通话url如下: api/apartments?projection={“id”:1,”address”:1} 这个调用的服务接口是这样的: @GET(“api/apartments?projection={\”id\”:1,\”address\”:1}”) fun getAllApartments(@Header(AUTHORIZATION) auth: String): Single<List> 这是我执行呼叫的方式: override fun getAllApartments(): Single<List> = retrofit.create(ApartmentsService::class.java).getAllApartments(“$BEARER$token”) 这就是我所说的function: getAllApartmentsUseCase.getAllApartments() .subscribe( { apartments.clear() apartments.addAll(it) view.showApartments(apartments) }, { println(it.message) } ) 这个调用适用于Postman,结果如下: [ { “_id”: “591ecaca861a528a5b4c3d90”, “id”: “ROC 03” }, { “_id”: “591a0fb2861a528a5b4c3d60” }, { “_id”: “58be94d484c4b0a468fb93e0”, “id”: “CAN 2.3”, “address”: “Els Refugis” } ]

如何在不使用kotlin中的Asynctask的情况下调用Api的百分比进度?

目的 :我使用retrofit库进行api调用时使用progress dialog 。 为此,我使用下面的代码: private var progressDialog: ProgressDialog? = null @JvmStatic fun showProgress(message: String?, context: Context?, cancellable: Boolean) { if (context == null) return if (checkProgressOpen()) return progressDialog = ProgressDialog(context) (progressDialog as ProgressDialog).setProgressStyle(ProgressDialog.STYLE_SPINNER) (progressDialog as ProgressDialog).setMessage(message ?: “Please wait…”) (progressDialog as ProgressDialog).setCancelable(cancellable) try { (progressDialog as ProgressDialog).show() } catch (e: Exception) { // catch […]

翻新2 POST XML并从API获取JSON答案。 与Kotlin

我需要发送XML到服务器,我想服务器发回我的JSON。 我正在使用Retrofit 2 + Kotlin Retrofit2方法(在方法接口中): @Headers(“Content-Type: application/xml; charset=urf-8”, “Accept: application/json”) @POST(Connectors.SECRET_LINK) fun sendCustomXml(@Body data: XmlHolder): Observable Retrofit2服务: private fun createService(serviceClass: Class): S { val retrofit = return } init { initLoggingInterceptor() val builder = Retrofit.Builder() .baseUrl(BuildConfig.API_URL) .addConverterFactory(GsonConverterFactory.create()) .addConverterFactory(SimpleXmlConverterFactory.create()) //here it is I thought .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) mService = builder.client(getHttpClient()).build().create(ApiMethods::class.java)) } XML对象我需要发送像XML(标签等): @Root(name = “root_element”) class XmlHolder […]

RxJava和使用Kotlin翻新

如何在Kotlin中使用RxJava和Retrofit为API调用创建generics类?

HttpException未被onError()捕获

我正在使用Retrofit2和RxJava2向后端服务器发送请求。 当答案是200或201时,一切正常。 当服务器的响应是409或503并引发HttpException ,它不会被Observable的onError()捕获,并且应用程序崩溃。 我正在做的请求是这样的: @POST("users/sign-up") fun register(@Body register: RegisterBody): Observable<User> 我做请求的代码片段是这样的( applySchedulers()只适用于subscribeOn()和observeOn() ): api.register(body) .compose(applySchedulers()) .subscribe( { user -> onNextRegister(user.id, email.toString(), password.toString()) }, { error -> handleRegistrationError(error) }) 引发的异常如下所示: io.reactivex.exceptions.CompositeException: 2 exceptions occurred. ComposedException 1 : retrofit2.adapter.rxjava2.HttpException: HTTP 503 Unavailable ComposedException 2 : kotlin.NotImplementedError: An operation is not implemented: not implemented 即使我为Observable实现onError() ,如何防止应用程序崩溃? 请注意, […]

无法获取Meetup API访问令牌与改造 – Android

我正在尝试使用改进来实现Meetup API的 OAuth 2身份验证。 我有授权码,但我无法获得访问令牌。 这里是所有相关的代码位: 我的onResume方法: override fun onResume() { super.onResume() // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent val uri = intent.data if (uri != null && uri.toString().startsWith(CALL_BACK)) { val code = uri.getQueryParameter("code") if (code != null) { // get access token // we'll do that in […]

java.lang.NoClassDefFoundError:com.example.api.retrofit.AuthenticationInterceptor $ intercept $ 1

我最近添加了retrofit2到我的应用程序。 它在运行Android 8.0的Nexus 6P上运行良好,但是在运行Android 6.0.1的旧版OnePlus One上运行时遇到了一个错误: java.lang.NoClassDefFoundError: com.example.api.retrofit.AuthenticationInterceptor$intercept$1 at com.example.api.retrofit.AuthenticationInterceptor.intercept(AuthenticationInterceptor.kt:21) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) at okhttp3.RealCall.execute(RealCall.java:69) at retrofit2.OkHttpCall.execute(OkHttpCall.java:180) at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91) at com.example.fragment.xx.XXFragment$onViewCreated$2.getItemsForConstraint(XXFragment.kt:53) at com.example.view.MyAutoCompleteTextView$Adapter$getFilter$1.performFiltering(MyAutoCompleteTextView.kt:114) at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61) 这是我的代码: 的build.gradle buildscript { ext { okhttpVersion = '3.8.0' retrofitVersion = '2.3.0' } … } 应用程序/的build.gradle: compile "com.squareup.okhttp3:okhttp:$okhttpVersion" compile "com.squareup.okhttp3:logging-interceptor:$okhttpVersion" compile […]