åæ Retrofit + RxJavaã使ã£ãAPIéä¿¡æã«ãããã©ã«ãã§ã¯HTTP 200çªå°ä»¥å¤ã®ã¹ãã¼ã¿ã¹ã³ã¼ãã¯ã¨ã©ã¼ã¨ã㦠onError(throwable) ã«æ¸¡ã£ã¦ããã ãã®å ´å㯠retrofit2.HttpException åã«ãªã£ã¦ãããããonError å ã§ if (throwable instanceof HttpException) ããã°åå¥ã«ãã³ããªã³ã°å¯è½ã§ããããããã使ãããããã©ããã¯è°è«ã®ä½å°ãããããã«æãã å人çã«ã¯ããªã«ããªä¸è½ãªã¨ã©ã¼ï¼ãã¨ãã°ãµã¼ããã¦ã³ããããã¯ã¼ã¯ä¸éï¼ä»¥å¤ã¯ onNext ã§åãåãããã 1 çç±ã¯2ã¤ãã£ã¦ã onErrorã«ããã¨ãã®Observableã¯çµäºããã®ã§ RxBinding + REST ã®çµã¿åããã®ãããªObservableã¨ç¸æ§ãè¯ããªãã ã¨ã©ã¼çç±ãJSONã§è¿ãAPIã¯ãã§ã
What Is Retrofit? Retrofit is a type-safe HTTP client for Android and Java. Retrofit makes it easy to connect to a REST web service by translating the API into Java interfaces. In this tutorial, I'll show you how to use one of most popular and often-recommended HTTP libraries available for Android. This powerful library makes it easy to consume JSON or XML data which is then parsed into Plain Old
(ãã®è¨äºã¯RxJavaã¨OkHttpãç¥ã£ã¦ããåæã§é²ãã¦ããã¾ããã¾ããã®è¨äºã¯RxJavaããã¼ããããã ãã®è¨äºã§ãã401ã®ãã³ããªã³ã°ã®ã¨ããã¯ãRxJavaã使ãããã ãã®ã¦ã¼ã¹ã±ã¼ã¹ã¨ããã1ä¾ã«ãªãã¾ãã) ãã®è¨äºã®ãµã³ãã«ã³ã¼ã㯠ãã(Github)ã«ããã¾ãã APIå¨ãã®éçºããã¦ãã¦ã401ã®ã¨ãã®å¦çãã©ããããã¨ããæ°¸é ã®èª²é¡ãããã¨æãã¾ãã ã¯ã©ã¤ã¢ã³ãå´ã§é å¼µãã¨ããã以ä¸ã®æãã«ãªãããªã¨æãã¾ãã OkHttpã®Authenticatorã使ããããã§401ã®ã¨ãã®ãã³ããªã³ã°ããããå ¬å¼ããã¥ã¡ã³ãã®ãªã³ã¯ OkHttpã®Interceptorã使ããããã§401ã®ã¨ãã®ãã³ããªã³ã°ããããå ¬å¼ããã¥ã¡ã³ãã®ãªã³ã¯ åå¦ç(ä¾ãã°RxJavaã®Transformerã¨ã)ã«401ç¨ã®å¦çãåãè¾¼ãã§ãretryãæããã ãªã©ãããããªã¨(O
è¤æ°ã®ãã¹ãã«ä¸¦è¡ãã¦HTTPãªã¯ã¨ã¹ããéãã³ã¼ããJavaã§æ¸ãå¿ è¦ããã£ã¦ãUndertowããµã¼ãã«ä½¿ã£ã¦ããã§Undertowã® http client ã§ãããããªã¼ã¨æã£ã¦ããã ãã©ãokhttpã«ãéåæãªã¯ã¨ã¹ãã®æ©è½ãããã¿ããã ãã ããã¨è¦ã¦å®è¡ã¹ã¬ããæ°ã®è¨å®ã¨ãã©ããªã£ã¨ããããã¨ããã®ãå ¨ãããããªãã£ãã®ã§ã¡ãã£ã¨ã³ã¼ãã追ã£ã¦ã¿ãã¨ããã以ä¸ã®ãããªæãã®ã³ã¼ããçºè¦ãã¾ããã å¼ã³åºãé ã¨ãã¦ã¯ã®ä»¥ä¸ãããªæãã OkHttpClient.newCall(Request req) Call.enqueue(Callback callback) RealCall.enqueue(Callback callback) client.dispatcher().enqueue(new AsyncCall(responseCallback)); ã³ã³ ãªãã§ããã®
大å¦ã®ææ¥ã®å¯æã§Javaã§WebAPIã使ã£ãããã°ã©ã ã«ã¤ãã¦ã¾ã¨ãããã¨ã«ãªã£ãã®ã§ããã«ã¾ã¨ãã¾ãã 使ç¨ããã©ã¤ãã©ãª Okhttp - square gson - Google Javaã§HTTPéä¿¡ã ã£ããJSONãæ±ãã®ã«ä¸ããèªåã§æ¸ãã®ã£ã¦çµæ§ã¤ããã§ãããã ã¾ãã¨ã©ã¼ãã³ããªã³ã°ã¨ããã£ãããããªãã¨ã¨ã¦ã使ãããã®ã«ã¯ãªããªãã¨æãã¾ãã ãã£ã¦ä»åã¯ã©ã¤ãã©ãªã使ãã¾ãã â» åå¼·ããã®ã«ã©ã¤ãã©ãªä½¿ã£ã¦è¯ãã®ããã£ã¦æã人ãããã¨æãã¾ãããä»åã¯ãµã¯ãã¨ä½¿ãããããªãµã³ãã«ç¨æãã¦ããã£ã¦ãããªã¼ãã¼ã ã£ãã®ã§ã©ã¤ãã©ãªã¯ä½¿ç¨ãã¾ãã 使ç¨ããWebAPI Livedoor Weather Web Service Livedoorãæä¾ãã¦ãã天æ°äºå ±APIã§ãã ã¦ãã¨ãã«é¸ã³ã¾ãããã¾ãèªè¨¼ã¯ç¡ãã®APIãªããªãã§ãè¯ãã£ãã§ãã HTTPéä¿¡ éä¿¡é¨å
æ¦è¦ HTTP Client ã®ãã¹ãã§å½¹ç«ã¤ã©ã¤ãã©ãª MockWebServer ã«ã¤ãã¦èª¿ã¹ã¦ã¿ã¾ããã MockWebServer ã¨ã¯ OkHttp ã®ãã¹ããããããã«ä½ã£ãã®ã ããã¨æãããã©ã¤ãã©ãªã§ãOkHttp ã®ãªãã¸ããªå ã«ããã¸ã§ã¯ããããã¾ããã©ã¤ã»ã³ã¹ã¯ Apache License, Version 2.0 ã§ãã HTTP éä¿¡é¨åã Mock åããã®ã«ä½¿ãã¾ãã仿¥æ¥ã HTTP éä¿¡ã使ããªãã¢ããªã±ã¼ã·ã§ã³ããããããªãã§ããããããéè¦ã¯çµæ§ãããããªæãããã¾ãã OkHttp ã¨ã¯ Android åãã®ä¾¿å©ãªã©ã¤ãã©ãªã大éã«ä½ã£ã¦ãã Square, Inc. ã®éçºãã HTTP Client ã§ããæ®éã® Java ã©ã¤ãã©ãªãªã®ã§ãWeb ã¢ããªã±ã¼ã·ã§ã³ãæ¥åã¢ããªã±ã¼ã·ã§ã³ã§ãå©ç¨ã§ãã¾ã Android çéã§ã¯ Apache
ã¯ããã« OkHttp2ã¨OkHttp3ã¨ã§ã³ãã¯ã·ã§ã³ãã¼ã«ã®é¨åã大ããå¤ãã£ã¦ããã Change Logããã®å¼ç¨ã There is no longer a global singleton connection pool. In OkHttp 2.x, all OkHttpClient instances shared a common connection pool by default. In OkHttp 3.x, each new OkHttpClient gets its own private connection pool. Applications should avoid creating many connection pools as doing so prevents connection reuse. Each connection pool hold
ã©ããï¼ã¹ãã¼ããã©ã³ã¢ããªãã¼ã ã®å²©ç°ã§ãï¼ IoTLT Advent Calendar 2016ã®15æ¥ç®ã®è¨äºã§ãã æè¿ã社å ã«å°å ¥ããã¦ããSlackã®çµµæåã追å ãããã¨ãå°ããªæ¥½ãã¿ã«ãªã£ã¦ãã¾ããååã®è¨äºã§æ¸å¿µãã¦ããå¥åº·è¨ºæã¯è¡å§ãé«ãã«ãªãããã ã¨ãããã¨ããã®å ´ãåãã¦ãå ±åããã¦ããã ãã¾ãã ä»åã¯å°ãæ¥åããé¢ãã¦ã社å LT大ä¼ãIoTLTã§çºè¡¨ãããMinecraft x IoTãã®è£è¶³è¨äºãæ¸ãã¦ããã¾ãã çºè¡¨ãè¦ã¦ããªãæ¹ã¯SlideShareã«ã¦è³æãå ±æãã¦ãã¾ãã®ã§ä¸èªãã¦ããã ããã¨å¹¸ãã§ãã IoTãé§ä½¿ãã¦ã²ã¼ã ã®ä¸çã¨ç¾å®ã®ä¸çãçµã¿åãããæ°ããMinecraftã®éã³æ¹ãç´¹ä»ãã¦ããããã¨æãã¾ãã 使ããã® ãã£ããæ°ããéã³æ¹ãå®ç¾ããããã«å¿ è¦ãªãã®ãã¡ãç´¹ä»ãã¾ãã Minecraft PCç Wio Node ãã¿ã³ LED
2018/11/29 è¿½è¨ UTF-8 以å¤ã®æåã³ã¼ãã§ POST / PUT ãè¡ãæ¹æ³ã追è¨ãã¾ããã RxJava 2.x ç¨ã® CallAdapter ã追è¨ãã¾ããã åæ¸ã æè¿Retrofitã使ããã¨ããã£ããã§ãããã¤ã³ãããã¯ã·ã§ã³ãã¡ããã£ã¨èªãã ãããã ã¨ããããã¼ãªã®ï¼ãã¨æããããªäºè±¡ã«ä½åº¦ãè¦èãããã®ã§ãã¡ã¢ãã¦ããã¾ãã API ã®è¨å® HTTP ã¡ã½ããããã¹ãã¯ã¨ãªããã©ã¡ã¼ã¿ãªã©ãé©å½ã«ä½ã£ãã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨ã¢ããã¼ã·ã§ã³ã§è¡¨ç¾ãã¾ãã public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user); } ãã¼ã¹ã¨ãªã URL ã¯Retrofit.Builder#baseUrlã§æ¸¡ãã®
ã¯ããã« OkHttpã®ãã¼ã¸ã§ã³ãï¼ã«ãªãããã¤ã夿´ç¹ãããã¾ããã®ã§å¤æ´ç¹ãå«ãã¦OkHttpã®ä½¿ãæ¹ããç´¹ä»ãã¾ãã Rxã使ããã·ã³ãã«ã«OkHttpã ãã§éä¿¡å¦çããã¦ãã¾ãã ä»åããã¤ãã¨åãopenweathermapã使ã£ã¦ãã¾ãã OkHttpï¼ã¨OkHttp3ã®éã ã¾ã OkHttpã®ä½¿ãæ¹ã®ããããã§ãã - Requestãªãã¸ã§ã¯ãä½ã - OkHttpãªãã¸ã§ã¯ãä½ã - enqueue()ã¡ã½ããã«ã³ã¼ã«ããã¯ãå®ç¾©ãã [OkHttp2] Request request = new Request.Builder() .url("http://api.openweathermap.org/data/2.5/weather?id=2172797&APPID=464b981be2248f383ab898810xxxxxxx") .get() .build(
class HatenaOAuthManager(private val consumerKey: String, private val consumerSecret: String) { companion object { private val REQUEST_TOKEN_ENDPOINT_URL = "https://www.hatena.com/oauth/initiate" private val ACCESS_TOKEN_ENDPOINT_URL = "https://www.hatena.com/oauth/token" private val AUTHORIZATION_WEBSITE_URL = "https://www.hatena.ne.jp/touch/oauth/authorize" val AUTHORIZATION_DENY_URL = "$AUTHORI
ãã¾ãã¾ChangeLogãèªãã ã®ã§ãæ°ã«ãªã£ããã¤ã³ããç´¹ä»ãã¾ãã Packageåã夿´ãã 3ç³»ã«ãªã£ã¦com.squareup.okhttpããokhttp3ã«å¤æ´ããã¦ãã¾ããçç±ã¯Jakeã®ããã°ã«è©³ããæ¸ããã¦ãã¾ãããè¦ç´ããã¨ã2ç³»ã®ã³ã¼ãã¨å ±ååºæ¥ãããã«ãããã¨ã§ãé¨åç/段éçã«3ç³»ã®ã³ã¼ããåãå ¥ãããã¨ãå¯è½ã«ãã¦ããã¼ã¸ã§ã³ã¢ããã®è² æ ãæ¸ãããã¨ãç®çã®ããã§ãã ã°ãã¼ãã«ãªconnection poolã®ä»çµã¿ããªããªã£ã 2ç³»ã¯å ¨ã¦ã®OkHttpClientã®ã¤ã³ã¹ã¿ã³ã¹ãã°ãã¼ãã«ãªã³ãã¯ã·ã§ã³ãã¼ã«ãå ±æãã¦ãããããã®ã§ãã(ç¥ããªãã£ã... )ãããããªããªãã¾ããã ãã®ããã3ç³»ã§ã¯ä¸ã¤ã®OkHttpClientã¤ã³ã¹ã¿ã³ã¹ãã¢ããªã±ã¼ã·ã§ã³å ¨ä½ã§ä½¿ãã¾ãããã¨ãè¦ãããã¦ãã¾ãã OkHttpClientãä¸å¤ã«ãªã£ã 2ç³»ã®OkH
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}