Questions tagged «retrofit»

Retrofit是Square,Inc.针对Android和Java的类型安全REST客户端。

7
如何在Android上使用Retrofit处理“无互联网连接”
我想处理没有互联网连接的情况。通常我会跑: ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); (从此处开始),然后再将请求发送到网络,并通知用户是否没有互联网连接。 从我看来,Retrofit不能专门处理这种情况。如果没有互联网连接,我将RetrofitError超时作为原因。 如果我想使用Retrofit将这种检查合并到每个HTTP请求中,该怎么办?还是我应该做。 谢谢 亚历克斯
119 android  retrofit 

12
使用改造使用GSON获取嵌套的JSON对象
我正在使用Android应用程序中的API,所有JSON响应均如下所示: { 'status': 'OK', 'reason': 'Everything was fine', 'content': { < some data here > } 问题是,我所有的POJO有status,reason字段,里面content领域是真正的POJO我想要的。 有什么方法可以创建Gson的自定义转换器来提取始终的content字段,因此改造会返回适当的POJO?
111 java  android  json  gson  retrofit 

3
使用Retrofit 2.0和RxJava获取响应状态代码
我正在尝试升级到Retrofit 2.0,并在我的android项目中添加RxJava。我正在进行api调用,并希望在服务器出现错误响应的情况下检索错误代码。 Observable<MyResponseObject> apiCall(@Body body); 在RxJava调用中: myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyResponseObject myResponseObject) { //On response from server } }); 在Retrofit 1.9中,RetrofitError仍然存在,我们可以通过执行以下操作获取状态: error.getResponse().getStatus() 如何使用RxJava使用Retrofit 2.0?

4
为什么有OkHttp时为什么要使用Retrofit
使用OkHttp,我们可以发出HTTP请求,然后从服务器获取响应 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); 然后使用Gson lib将响应转换为我们需要的对象。 这是来自Square / OkHttp文档: 它的请求/响应API具有流畅的构建器和不变性。它支持同步阻塞调用和带回调的异步调用 我从stackOverFlow阅读 如果可用,翻新将自动使用OkHTTP 。 所以我的问题是Retrofit到底要做什么? OkHttp无法做到的Retrofit可以做什么? 我认为OkHttp和Gson解决了请求API问题,那么Retrofit为我们解决了什么问题?
107 java  android  retrofit  okhttp 

10
使用JsonReader.setLenient(true)在第1行第1列路径$处接受格式错误的JSON
这是什么错误?我怎样才能解决这个问题?我的应用程序正在运行,但无法加载数据。这是我的错误:使用JsonReader.setLenient(true)在第1行第1列路径$接受格式错误的JSON 这是我的片段: public class news extends Fragment { private RecyclerView recyclerView; private ArrayList<Deatails> data; private DataAdapter adapter; private View myFragmentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { myFragmentView = inflater.inflate(R.layout.news, container, false); initViews(); return myFragmentView; } private void initViews() { recyclerView = (RecyclerView) myFragmentView.findViewById(R.id.card_recycler_view); RecyclerView.LayoutManager layoutManager = …
105 android  json  gson  retrofit 

11
方形改装服务器模拟测试
什么是嘲笑使用时,测试服务器的最好办法广场改造框架。 可能的方式: 创建一个新的改装客户端,并在RestAdapter.Builder()。setClient()中进行设置。这涉及解析Request对象并返回json作为Response对象。 将此带注释的接口实现为模拟类,并使用它代替RestAdapter.create()提供的版本(不会测试gson序列化) ? 理想情况下,我想让模拟服务器提供json响应,以便我可以同时测试gson序列化。 任何例子将不胜感激。

4
如何在Retrofit 2.0中使用拦截器添加标题?
我们的团队决定采用Retrofit 2.0,而我正在对此进行一些初步研究。我是这个图书馆的新手。 我想知道如何interceptor通过Android应用程序中的Retrofits 2.0添加自定义标题。有很多关于在Retrofit 1.X中使用添加标头的教程interceptor,但是由于API在最新版本中发生了很大变化,因此我不确定如何在新版本中适应这些方法。另外,Retrofit尚未更新其新文档。 例如,在以下代码中,应如何实现Interceptor该类以添加额外的标头?此外,未记录的Chain对象到底是什么?何时会intercept()被调用? OkHttpClient client = new OkHttpClient(); client.interceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Response response = chain.proceed(chain.request()); // How to add extra headers? return response; } }); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_API_URL) .client(client) .addConverterFactory(GsonConverterFactory.create()) .build();
96 java  android  retrofit 

3
无法为io.reactivex.Observable创建呼叫适配器
我将发送一个简单的get方法到我的服务器(这是Rails应用),并使用RxJava和Retrofit获得结果。我所做的是: 我的界面: public interface ApiCall { String SERVICE_ENDPOINT = "https://198.50.214.15"; @GET("/api/post") io.reactivex.Observable<Post> getPost(); } 我的模型是这样的: public class Post { @SerializedName("id") private String id; @SerializedName("body") private String body; @SerializedName("title") private String title; public String getId () { return id; } public String getBody () { return body; } public String getTitle …

9
如何将标头添加到OkHttp请求拦截器?
我将这个拦截器添加到我的OkHttp客户端中: public class RequestTokenInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); // Here where we'll try to refresh token. // with an retrofit call // After we succeed we'll proceed our request Response response = chain.proceed(request); return response; } } 如何在拦截器中添加标题以进行请求? 我尝试了这个,但是我犯错了,创建新请求时我丢失了请求: …

4
使用参数进行改造和GET
我正在尝试使用Retrofit向Google GeoCode API发送请求。服务界面如下所示: public interface FooService { @GET("/maps/api/geocode/json?address={zipcode}&sensor=false") void getPositionByZip(@Path("zipcode") int zipcode, Callback<String> cb); } 当我致电服务时: OkHttpClient okHttpClient = new OkHttpClient(); RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(Constants.GOOGLE_GEOCODE_URL).setClient(new OkClient(okHttpClient)).build(); FooService service = restAdapter.create(FooService.class); service.getPositionByZip(zipCode, new Callback<String>() { @Override public void success(String jsonResponse, Response response) { ... } @Override public void failure(RetrofitError retrofitError) …
92 android  get  retrofit 

14
无法为类示例创建呼叫适配器。简单
我正在使用SimpleXml改造2.0.0-beta1。我想从REST服务中检索简单(XML)资源。使用SimpleXML编组/解组Simple对象可以正常工作。 使用此代码(转换为2.0.0之前的代码)时: final Retrofit rest = new Retrofit.Builder() .addConverterFactory(SimpleXmlConverterFactory.create()) .baseUrl(endpoint) .build(); SimpleService service = rest.create(SimpleService.class); LOG.info(service.getSimple("572642")); 服务: public interface SimpleService { @GET("/simple/{id}") Simple getSimple(@Path("id") String id); } 我得到这个例外: Exception in thread "main" java.lang.IllegalArgumentException: Unable to create call adapter for class example.Simple for method SimpleService.getSimple at retrofit.Utils.methodError(Utils.java:201) at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:51) at retrofit.MethodHandler.create(MethodHandler.java:30) …

4
Android改装参数化@Headers
我正在使用OAuth,每次发出请求时,都需要将OAuth令牌放在标头中。我看到了@Header注释,但是有没有一种方法可以对其进行参数化,以便我可以在运行时传递? 这是概念 @Header({Authorization:'OAuth {var}', api_version={var} }) 您可以在运行时传递它们吗? @GET("/users") void getUsers( @Header("Authorization") String auth, @Header("X-Api-Version") String version, Callback<User> callback )

1
使用Rxjava Schedulers.newThread()与Schedulers.io()进行改造
什么是使用的好处Schedulers.newThread()VSSchedulers.io()在Retrofit网络请求。我已经看到了许多使用的示例io(),但是我想理解为什么。 情况示例: observable.onErrorResumeNext(refreshTokenAndRetry(observable)) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread())... 与 observable.onErrorResumeNext(refreshTokenAndRetry(observable)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())... 我见过的原因之一是- newThread()为每个工作单元创建一个新线程。io()将使用线程池 但是,这种说法对应用程序有什么影响?还有其他哪些方面?

10
如何在翻新中处理动态JSON?
我正在使用改造高效的网络库,但是无法处理包含单个前缀的Dynamic JSON,该前缀 responseMessage会object随机responseMessage更改,在某些情况下(动态),相同的前缀()会更改为String。 Json格式的responseMessage对象: { "applicationType":"1", "responseMessage":{ "surname":"Jhon", "forename":" taylor", "dob":"17081990", "refNo":"3394909238490F", "result":"Received" } } responseMessage Json格式会动态更改为字符串类型: { "applicationType":"4", "responseMessage":"Success" } 我的问题是,因为改造具有内置的JSON解析功能,所以我必须为每个请求分配单个POJO!但不幸的是,REST-API是基于动态JSON响应构建的。前缀将在成功(...)和失败(...)方法中从字符串随机更改为对象! void doTrackRef(Map<String, String> paramsref2) { RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://192.168.100.44/RestDemo").build(); TrackerRefRequest userref = restAdapter.create(TrackerRefRequest.class); userref.login(paramsref2, new Callback<TrackerRefResponse>() { @Override public void success( TrackerRefResponse trackdetailresponse, Response response) { Toast.makeText(TrackerActivity.this, …
82 android  json  gson  retrofit 

7
改装GSON将json字符串中的Date序列化为java.util.date
我正在对我的REST调用使用Retrofit库。我所做的大部分工作都像黄油一样顺利,但是由于某些原因,我在将JSON时间戳字符串转换为java.util.Date对象时遇到了问题。传入的JSON如下所示。 { "date": "2013-07-16", "created_at": "2013-07-16T22:52:36Z", } 如何告诉Retrofit或Gson将这些字符串转换成java.util.Date objects?
81 java  android  json  gson  retrofit 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.