Tag: retrofit2

获取不同类型的JSON响应Retrofit

我有REST api,它根据当前状态在同一路径上做出响应。 让我们假设/api/users响应 { “status”:200, “error”:false, “users”:[“a”,”b”] } 如果用户被授权。 否则,如果用户未获得授权,则以{“status”:403,”error”:true,”redirect”:”url”}响应。 使用Retrofit为api调用定义Interface时,它需要确切类型的响应对象。 例如: @GET(“users”) Call<List> getUsers() 但是这里API服务器响应不同形状的对象。 如何处理这种情况?

预计BEGIN_ARRAY但是BEGIN_OBJECT改造2

我有一些关于retrofit2的问题 如何修复预期的BEGIN_ARRAY但是在retrofit2中是BEGIN_OBJECT 我不知道要解决它 我错了什么? 我的json是 { “result”: true, “message”: “success”, “data”: [ { “id”: “10”, “type_name”: “pppppp” }, { “id_mt”: “11”, “type_name”: “aaaaaa” } ] } 我的模特课是 public class MessageFastModel { private boolean result; private String message; private List data; public boolean isResult() { return result; } public void setResult(boolean result) { this.result = result; […]

Android:无法从String值构造java.sql.Timestamp的实例

我开发了一个REST API,我正在尝试使用Android连接到它。 以下是我的代码。 private void restCall() { Retrofit retrofit = new Retrofit.Builder() .baseUrl(URL) .addConverterFactory(GsonConverterFactory.create()) .build(); YourEndpoints request = retrofit.create(YourEndpoints.class); SetupBean setupBean = new SetupBean(); setupBean.setIdPatient(1); setupBean.setCircleType(1); setupBean.setFamiliarity(1); setupBean.setValence(2); setupBean.setArousal(3); setupBean.setDateCreated(Common.getSQLCurrentTimeStamp()); setupBean.setLastUpdated(Common.getSQLCurrentTimeStamp()); Call yourResult = request.insertSetup(setupBean); yourResult.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { try { Log.d(“MainActivity”, “RESPONSE: ” + response.errorBody().string()); } catch(Exception […]

Retrofit 2 – 在api级别添加标头的优雅方式

我的Retrofit 2(当前2.0.2 )客户端需要为请求添加自定义标头。 我正在使用Interceptor将这些标头添加到所有请求中: OkHttpClient httpClient = new OkHttpClient(); httpClient.networkInterceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { final Request request = chain.request().newBuilder() .addHeader(“CUSTOM_HEADER_NAME_1”, “CUSTOM_HEADER_VALUE_1”) .addHeader(“CUSTOM_HEADER_NAME_2”, “CUSTOM_HEADER_VALUE_2”) … .addHeader(“CUSTOM_HEADER_NAME_N”, “CUSTOM_HEADER_VALUE_N”) .build(); return chain.proceed(request); } }); Retrofit retrofitClient = new Retrofit.Builder() .baseUrl(baseUrl) .client(httpClient) .build(); 我总是想添加一些标头,但是我只需要根据特定端点的要求添加一些标头,例如用户是否需要进行身份validation。 我希望能够在api级别控制它,例如使用注释,例如: public interface MyApi { @NO_AUTH @POST(“register”) Call register(@Body […]

如何从Retrofit onResponse()更新Activity / Fragment UI?

我想在我的下一个Android项目中使用Retrofit 2.1.0。 我想使用设计模式,因此为每个REST调用创建单独的类,即 IBalanceService.java public Interface IBalanceService{ @GET(“users/{username}”) void getUser(@Path(“username”) String username, Callback cb); } BalanceRestClient.java public class BalanceRestClient{ String username = “Makarov”; Retrofit retrofit = new Retrofit.Builder() .baseUrl(“http://hovermind.com”) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(rxAdapter) .build(); IBalanceService bs = retrofit.create(IBalanceService.class); Call call = apiService.getUser(username); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { User user = response.body(); […]

Retrofit2将身体贴为Json

我正在更新Retrofit以使用Retrofit2 ,我已经设法做了很多事情GET,POST,PUT …… 但我有一个请求,我必须发送一个完整的JSON,我设法在Retrofit 1.9中做到这一点但在Retrofit2中没有支持它。 import retrofit.mime.TypedString; public class TypedJsonString extends TypedString { public TypedJsonString(String body) { super(body); } @Override public String mimeType() { return “application/json”; } } 如何改造2 ?

如何使用Retrofit 2.0和新的MockRetrofit类来模拟服务?

使用Retrofit 1,我们用来模拟Web服务并模拟网络延迟,如下所示: MockRestAdapter mockRestAdapter = MockRestAdapter.from(restAdapter); return mockRestAdapter.create(MyService.class, new MyServiceMock()); 其中MyService是服务接口(将响应作为Rx Observables返回), MyServiceMock是实现此接口的类。 在Retrofit 2.0.0-beta3中,有一个尚未记录的全新模拟系统(参见: https : //github.com/square/retrofit/pull/1343 )。 当我尝试类似的东西,我得到: MockRetrofit mockRetrofit = new MockRetrofit.Builder(retrofit).build(); BehaviorDelegate delegate = mockRetrofit.create(MyService.class); 如何将呼叫转发到MyServiceMock ?

Android改造设计模式

我正在使用Retrofit与我的REST API进行交互,并且想知道是否有人有任何设计建议。 我的应用程序包含以下包: 楷模 服务 活动 片段 服务包包含Retrofit的接口。 例如: public interface FooService { @FormUrlEncoded @POST(“foo/do”) @Headers(“Content-Type: application/x-www-form-urlencoded; charset=UTF-8”) Call do(); } 模型包含……嗯,不同的模型。 例如, FooBar 。 到目前为止一切都很好 – 就像Retrofit文档一样。 我创建了一个API类,它处理Retrofit构建逻辑( Retrofit retrofit = new Retrofit.Builder()等),并公开一个静态字段:retrofit。在我的活动中,我可以按如下方式执行我的请求: FooService service = API.retrofit.create(FooService.class); Call call = service.do(); try { retrofit2.Response response = call.execute(); // …do stuff… } catch(IOException) {} 随之而来的是我的问题:进一步抽象上述内容会更好吗? […]