Tag: 翻新

改造2多部分请求

我正在将现有的代码库迁移到Retrofit 2,但在理解Multipart请求的新语法时遇到了一些麻烦。 我也在使用Kotlin,虽然除了一些语法上的改变之外,我认为这个问题应该没有关系。 这是我现在所拥有的: val audioDuration = RequestBody.create(null, audioDuration.toString()) val file = RequestBody.create(MediaType.parse("audio/mp4"), File(context.filesDir, filename).absoluteFile) sendAudioChunk(audioDuration, file).enqueue(callback) 这里是API的定义: @Multipart @POST("path_to_request") fun sendAudioChunk(@Part("duration") audioDuration: RequestBody, @Part("audio") audioBlob: RequestBody) : Call<ResponseObject> 在改造1.9我使用TypedString和TypedFile的请求参数,现在似乎需要使用OkHttp RequestBody,但我必须失去一些东西,因为请求不能正确执行。

改造+ gson反序列化器:返回数组中

我有api返回json: {"countries":[{"id":1,"name":"Australia"},{"id":2,"name":"Austria"}, … ]} 我写模特班(Kotlin lang) data class Country(val id: Int, val name: String) 我想要使​​用retorift返回List <Models.Country>,从json中的“countries”字段请求 我下面写: interface DictService { @GET("/json/countries") public fun countries(): Observable<List<Models.Country>> companion object { fun create() : DictService { val gsonBuilder = GsonBuilder() val listType = object : TypeToken<List<Models.Country>>(){}.type gsonBuilder.registerTypeAdapter(listType, CountriesDeserializer) gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) val service = Retrofit.Builder() .baseUrl("…") .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gsonBuilder.create())) .build() return […]

如何在Kotlin中使用RxAndroid + Retrofit获取响应标题?

我有一个API可观察返回一个CUSTOM_MODEL。 我想从这个调用也得到响应头。

使用包括实施方法的Kotlin特征进行改造

只要没有额外的方法实现,性状​​就可以很好地与Retrofit协同工作。 根据返回类型RetrofitError: TwitchApi.someMethod: HTTP method annotation is required (eg, @GET, @POST, etc.). 或java.lang.IllegalArgumentException: TwitchApi.someMethod: Must have either a return type or Callback as last argument. 被抛出。 有没有一种方法来改造忽略一种方法,没有用retrofit.http.GET / PUT / …注释? public trait SomeApi { GET("/endpoint") public fun getSomething(Query("user") user: String): Observable<SomeResponse> class object { public fun create(): SomeApi { val restAdapter = RestAdapter.Builder().setEndpoint("http://localhost").build() return […]

多部分请求与改进@PartMap错误Kotlin(Android)

如果我在Java中使用这个代码,那么它的工作正常。 当我在kotlin中转换代码时,我得到错误。 logcat的 System.err:java.lang.IllegalArgumentException:参数类型不能包含类型变量或通配符:java.util.Map(parameter#1) 08-20 23:46:51.003 3782-3782 / com.qkangaroo.app W / System.err:方法ApiInterface.updateCustomerDetail 08-20 23:46:51.003 3782-3782 / com.qkangaroo.app W / System.err :at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod.java:752)08-20 23:46:51.004 3782-3782 / com.qkangaroo.app W / System.err:at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod。 java:743)08-20 23:46:51.004 3782-3782 / com.qkangaroo.app W / System.err:at retrofit2.ServiceMethod $ Builder.parameterError(ServiceMethod.java:761)08-20 23:46:51.004 3782-3782 / com.qkangaroo.app W / System.err:在retrofit2.ServiceMethod $ Builder.build(ServiceMethod.java:195)08-20 23:46:51.004 […]

打开失败:在kotlin中ENOENT(没有这样的文件或目录)

我试图从gallery获取图像并将其发送给retrofit 。 发送我面临异常的图像。 E /错误:文件:/storage/sdcard0/Pictures/JPEG_20171012125800_1088307192.jpg:打开失败:ENOENT(没有这样的文件或目录) 以下是我的代码的显示。 这是kotlin。 点击按钮事件: img_add.setOnClickListener { var count = layout_direct_cemara.childCount isPermissionRequestRequired(this, perms, 1) if (count < 5) { setMultiShowButton() } else { C.showToast(applicationContext , "You can upload maximum 5 images") } } 以下是两个函数获取图像并将其设置为我的布局。 private fun setMultiShowButton() { val bottomSheetDialogFragment = TedBottomPicker.Builder(this) .setOnMultiImageSelectedListener { uriList -> selectedUriList = uriList showUriList(uriList) } .setPeekHeight(1600) […]

将任何转换为​​Kotlin中的ArrayList,改造

我在我的android应用程序中使用Kotlin和Retrofit。 答案是一个类。 具有通用的价值即。 数据:任何? data class GlobalResponse(@Expose val status: String, @Expose val message: String, @Expose val data: Any?) data class District(@Expose val name:String) @GET("{endpoint}") fun getData( @Path("endpoint") endpoint: String ): Observable<GlobalResponse> RestService.create().getData("res") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> // Ok Log.e("Hello", "Hello") // problem here // Jumps to error-> below Log.e("Name", ((response.data as ArrayList<District>)[0]).name) }, { […]

用RX和Kotlin编写网络请求

我正在使用与RXJava和Retrofit进行网络调用的kotlin的Android应用程序。 在启动时,应用程序将对类似REST的后端执行多个网络调用。 该程序看起来非常像Netflix在其示例中使用的程序。 然而,当试图重写它与Kotlin一起工作时,我正在挣扎。 我很难理解Kotlin关闭中的回报如何工作。 非常感谢这里的一些帮助! Netflix的例子: return getUser(userId).flatMap(user -> { Observable<Map<String, Object>> catalog = getPersonalizedCatalog(user) .flatMap(catalogList -> catalogList.videos().<Map<String, Object>> flatMap( video -> { Observable<Bookmark> bookmark = getBookmark(video); Observable<Rating> rating = getRatings(video); Observable<VideoMetadata> metadata = getVideoMetadata(video); return Observable.zip(bookmark, rating, metadata, (b, r, m) -> combineVideoData(video, b, r, m)); })); Observable<Map<String, Object>> social = getSocial(user).map(s -> […]