- New: All classes have been migrated to the
retrofit2.*package name. The Maven groupId is now
com.squareup.retrofit2. This is in accordance with the Java Interoperability Policy for Major Version Updates. With this change Retrofit 2.x can coexiest with Retrofit 1.x in the same project.
- New: Update to use the OkHttp 3 API and OkHttp 3.0.0-RC1 or newer is now required. Similar to the previous
point, OkHttp has a new package name (
okhttp3.*) and Maven groupId (
com.squareup.okhttp3) which allow it to coexist with OkHttp 2.x in the same project.
- New: String converters allow for custom serialization of parameters that end up as strings (such as
Converter.Factoryhas a new
stringConvertermethod which receives the parameter type and annotations and can return a converter for that type. This allows providing custom rendering of types like
User, etc. to a string before being used for its purpose. A default converter will call
toString()for any type which retains the mimics the previous behavior.
- New: OkHttp's
Call.Factorytype is now used as the HTTP client rather than using the
OkHttpClienttype directly (
callFactorymethod has been added to both
Retrofitto allow supplying alternate implementations of an HTTP client. The
Retrofit.Builderstill exists as a convenience.
isExecuted()method returns whether a
Callhas been synchronously or asynchronously executed.
isCanceled()method returns whether a
Callhas been canceled. Use this in
onFailureto determine whether the callback was invoked from cancelation or actual transport failure.
converter-scalarsmodule provides a
String, the 8 primitive types, and the 8 boxed primitive types as
text/plainbodies. Install this before your normal converter to avoid passing these simple scalars through, for example, a JSON converter.
Converter.Factorymethods now receive a
Retrofitinstance which also now has methods for querying the next converter for a given type. This allows implementations to delegate to others and provide additional behavior without complete reimplementation.
@OPTIONSannotation more easily allows for making OPTIONS requests.
@Partannotation now supports
Listand array types.
- New: The
@Urlannotation now allows using
android.net.Uri(in addition to
String) as parameter types for providing relative or absolute endpoint URLs dynamically.
- New: The
retrofit-mockmodule has been rewritten with a new
BehaviorDelegateclass for implementing fake network behavior in a local mock implementation of your service endpoints. Documentation and more tests are forthcoming, but the
SimpleMockServicedemonstrates its use for now.
- Fix: Forbid Retrofit's
Responsetype and OkHttp's
Responsetype as the response body type given to a
ResponseBodytype is the correct one to use when the raw body contents are desired.
- Fix: The Gson converter now respects settings on the supplied
Gsoninstance (such as
serializeNulls). This requires Gson 2.4 or newer.
- The Wire converter has been updated to the Wire 2.0 API.
- The change in 2.0.0-beta2 which provided the
Retrofitinstance to the
Callbackhas been reverted. There are too many edge cases around providing the
Retrofitobject in order to allow deserialization of the error body. To accommodate this use case, pass around the
Retrofitresponse manually or implement a custom
CallAdapter.Factorydoes so automatically.
- New: Using a response type of
Call<Void>) will ignore and discard the response body. This can be used when there will be no response body (such as in a 201 response) or whenever the body is not needed.
@Headrequests are now forced to use this as their response type.
Retrofit.Builderwill verify the correctness of all service methods on calls to
create()instead of lazily validating on first use.
Converteris now parameterized over both 'from' and 'to' types with a single
Converter.Factoryis now an abstract class and has factory methods for both request body and response body.
CallAdapter.Factorynow receive the method annotations when being created for a return/response type and the parameter annotations when being created for a parameter type.
Retrofitallows querying a
CallAdapterfor a given type. The
nextCallAdapter()method allows delegating to another
CallAdapterfrom within a
CallAdapter.Factory. This is useful for composing call adapters to incrementally build up behavior.
Retrofitallow querying a
Converterfor a given type.
Callbacknow receives the
Retrofitinstance. Combined with the
Retrofit, this provides a way of deserializing an error body on
Response. See the
DeserializeErrorBodysample for an example.
- New: The
MoshiConverterFactoryhas been updated for its v1.0.0.
- Fix: Using
ResponseBodyfor the response type or
RequestBodyfor a parameter type is now correctly identified. Previously these types would erroneously be passed to the supplied converter.
- Fix: The encoding of
@Pathvalues has been corrected to conform to OkHttp's
- Fix: Use form-data content disposition subtype for
Single-based execution of requests now behave synchronously (and thus requires
subscribeOn()for running in the background).
- Fix: Correct
GsonConverterFactoryto honor the configuration of the
Gsoninstances (such as not serializing null values, the default).