{"id":653,"date":"2023-04-29T19:54:07","date_gmt":"2023-04-29T10:54:07","guid":{"rendered":"https:\/\/deskplate.net\/blog\/?p=653"},"modified":"2023-04-29T19:54:26","modified_gmt":"2023-04-29T10:54:26","slug":"retrofit-%e3%82%a8%e3%83%a9%e3%83%bc%e5%87%a6%e7%90%86","status":"publish","type":"post","link":"https:\/\/deskplate.net\/blog\/archives\/653","title":{"rendered":"Retrofit \u30a8\u30e9\u30fc\u51e6\u7406"},"content":{"rendered":"<p>Retrofit\u3067\u306eAPI\u51e6\u7406 RxJava \u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408<\/p>\n<p><code><br \/>\nxxxxxRepository.removeMessage(param: params)<br \/>\n            .subscribeOn(Schedulers.io())<br \/>\n            .observeOn(AndroidSchedulers.mainThread())<br \/>\n            .doOnSubscribe { isLoading.postValue(true) }<br \/>\n            .doFinally { isLoading.postValue(false) }<br \/>\n            .subscribe({<br \/>\n            \u3000\u3000\u3000\u3000isRemoveMessageSuccess.postValue(true)<br \/>\n            }, {<br \/>\n            \u3000\u3000\u3000\u3000\/\/ TODO: error handling<br \/>\n            \u3000\u3000\u3000\u3000Timber.d(it)<br \/>\n            \u3000\u3000\u3000\u3000if (it is HttpException) {<br \/>\n            \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000val body = it.response()?.errorBody()?.string()<br \/>\n            \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000if (!body.isNullOrEmpty()) {<br \/>\n           \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000val response = JsonUtil.fromJson(body, Error::class.java)<br \/>\n             \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000_errorMessage.value = response?.error?.message ?: \"\"<br \/>\n            \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n         \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000} else {<br \/>\n          \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000_errorMessage.value =  \"\"<br \/>\n         \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n            }).into(disposable)<br \/>\n<\/code><\/p>\n<p>\u30a8\u30e9\u30fc\u6642\u306b\u5909\u6570\u306b\u30a8\u30e9\u30fc\u5185\u5bb9\u304c\u5165\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304f<br \/>\n    \/\/ \u30a8\u30e9\u30fc<br \/>\n    protected val _errorMessage = MutableLiveData<String>()<br \/>\n    val errorMessage: LiveData<String> = _errorMessage<\/p>\n<p>View\u5074\u306f\u3053\u3093\u306a\u611f\u3058<br \/>\nviewModel.errorMessage.observeNonNull(this) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000context?.showErrorDialog(message = if (it.isNotEmpty()) it else\u3000getString(R.string.common_dialog_error_message))<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000viewModel.clearErrorMessage()<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n}<\/p>\n<p>    fun clearErrorMessage() {<br \/>\n    \u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000_errorMessage.postValue(null)<br \/>\n    }<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Retrofit\u3067\u306eAPI\u51e6\u7406 RxJa<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,48],"tags":[],"class_list":["post-653","post","type-post","status-publish","format-standard","hentry","category-java","category-kotlin"],"_links":{"self":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/comments?post=653"}],"version-history":[{"count":6,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/653\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/653\/revisions\/659"}],"wp:attachment":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/media?parent=653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/categories?post=653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/tags?post=653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}