Articles of retrofit2

IllegalArgumentException:找不到rx.Observable RxJava,Retrofit2的调用适配器

我在调用其余的api时遇到上述错误。 我正在使用retrofit2和RxJava。 ServiceFactory.java public class ServiceFactory { public static T createRetrofitService(final Class clazz, final String endpoint){ Retrofit retrofit = new Retrofit.Builder() .baseUrl(endpoint) //.addConverterFactory(GsonConverterFactory.create()) .build(); T service = retrofit.create(clazz); return service; } } MovieService.java public interface MovieService{ //public final String API_KEY = “”; public final String SERVICE_END = “https://api.mymovies.org/3/”; @GET(“movie/{movieId}??api_key=xyz”) Observable<Response> getMovies(@Field(“movieId”) int movieId); } 内部MainActivity […]

在Retrofit + RxJava中链接请求

我有2个API,我想按顺序请求并将它们的数据存储在SQLite中。 首先,我想向API A发出请求并将其数据存储在SQL表a 。 然后向API B发出请求并将其数据存储在表b并将一些数据存储在表a_b 。 存储在a_b的数据仅来自请求B 我怎么能用RxJava做到这一点。 我在这里读到了关于使用flatMap的地方,就像这样 apiService.A() // store in DB here? How? maybe use map()? .flatMap(modelA -> { // or maybe store modelA in DB here? return apiService.B().map(modelB -> { storeInDB()l // store B here ? return modelB; }); }); 如果我没有使用lambda函数,这看起来就像普通的嵌套调用一样难看。 这是一个更好的方法吗?

如何从Retrofit2获取字符串响应?

我正在做android,寻找一种方法来做一个超级基本的http GET / POST请求。 我一直收到错误: java.lang.IllegalArgumentException: Unable to create converter for class java.lang.String 网络服务: public interface WebService { @GET(“/projects”) Call jquery(); } 然后在我的java中: Retrofit retrofit = new Retrofit.Builder() .baseUrl(“https://jquery.org”) // .addConverterFactory(GsonConverterFactory.create()) .build(); WebService service = retrofit.create(WebService.class); Call signin = service.jquery(); Toast.makeText(this, signin.toString(), Toast.LENGTH_LONG).show(); 我实际上只是尝试使用GET请求查询jquery.org/projects并返回它响应的String。 哪里不对? 如果我尝试实现一个自定义转换器(我在网上find了一些例子),它抱怨我没有实现抽象方法convert(F),这些都没有。 谢谢。

Retrofit 2.0取消Call对象

有没有人玩过Retrofit 2.0 ,特别是Call.cancel()方法? 什么时候触发它的最佳时机? 我已经尝试在Fragment onStop()中调用它,但是在屏幕显示关闭时遇到了一些调用被取消的问题。 此外,我尝试在Fragment onDestroy()中调用它,但此方法不会取消在ViewPager触发的ViewPager (例如在选项卡之间切换) 有没有人有这方面的工作实例? 我试图实现这个我的Loop repo: https : //github.com/lawloretienne/Loop

RxJava + Retrofit – >用于API调用的BaseObservable,用于集中响应处理

我是RxJava的新手所以请原谅我,如果这听起来太新手了:-)。 截至目前,我有一个抽象的CallbackClass,它实现了Retofit Callback。 在那里我捕获了Callback的“onResponse”和“onError”方法,并在最终转发到自定义实现的方法之前处理各种错误types。 我还使用此集中式类来进行请求/响应应用程序日志记录和其他内容。 例如:对于来自我的服务器的特定错误代码,我在响应正文中收到一个新的Auth令牌,刷新令牌,然后clone.enqueue调用。 当然,我的服务器的响应还有其他一些全局行为。 目前的解决方案(没有Rx): public abstract void onResponse(Call call, Response response, boolean isSuccess); public abstract void onFailure(Call call, Response response, Throwable t, boolean isTimeout); @Override public void onResponse(Call call, Response response) { if (_isCanceled) return; if (response != null && !response.isSuccessful()) { if (response.code() == “SomeCode” && retryCount < RETRY_LIMIT) { […]

Kotlin中的Retrofit2 + SimpleXML:MethodException:Annotation必须标记set或get方法

我想从API获取XML数据,并使用Kotlin中的Retrofit2 + SimpleXML将其映射到Kotlin模型对象。 但是,我收到了来自SimpleXML的以下错误消息。 org.simpleframework.xml.core.MethodException:注释@ org.simpleframework.xml.Element(data = false,name =,required = true,type = void)必须标记set或get方法 这是获取的XML数据 Success XXXXXXXXXXXXXXXXXXXX 4294967295 Kotlin模型对象如下 @Root(name = “response”) public class User() { @Element public var result: String? = null @Element public var token: String? = null @Element public var uid: String? = null } 和APIClient如下。 interface MyService { @GET(“/testLogin.xml”) fun getUser(): Call […]

Retrofit和RxJava:如何组合两个请求并获得对这两个结果的访问权限?

我需要提出两个服务请求并将其结合起来: ServiceA()=> [{“id”:1,”name”:”title”},{“id”:1,”name”:”title”}] ServiceB( id )=> {“field”:”value”,”field1″:”value”} 目前,我已设法将结果组合在一起,但我需要将id作为parameter passing给ServiceB并获取对第一个结果的访问权限。 到目前为止我尝试了什么: Retrofit repo = new Retrofit.Builder() .baseUrl(“https://api.themoviedb.org/3/genre/”) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); Observable Genres = repo .create(services.class) .getAllGeneros(“movie”,”list”,”da0d692f7f62a1dc687580f79dc1e6a0″) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()); Observable Movies = repo .create(services.class) .getAllMovies(“28″,”movies”,”da0d692f7f62a1dc687580f79dc1e6a0″,12) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()); Observable combined = Observable.zip(Genres, Movies, new Func2() { @Override public CollectionsMovies call(GenerosResponse generosResponse, ResponseMovies responseMovies) { return new CollectionsMovies(generosResponse, responseMovies); […]

Retrofit2 error java.io.EOFException:第1行第1列的输入结束

我使用Retrofit2调用了PATCH Web服务但是没有调用onResponse而且调用了onFailure 尽管服务的操作在服务器端完成了 每当,我试图使用fiddler来检查服务的工作情况,我发现问题是序列化即将到来的服务响应,当使用fiddler时,我发现没有JSON响应的内容,所以Retrofit服务认为它失败了,因为没有内容,它无法序列化EMPTY内容并给我这个错误 java.io.EOFException: End of input at line 1 column 1 提琴手原始响应 HTTP/1.1 200 OK Server: nginx/1.9.4 Date: Wed, 02 Mar 2016 09:55:55 GMT Content-Type: application/json Content-Length: 0 Connection: close Status: 200 OK X-Content-Type-Options: nosniff Fiddler Json的回应是空的 java中的webservice Call call = TimeCapp.services.accept_invited_alerts(HomeActivity.api_token, alert_id); call.enqueue(new Callback() { @Override public void onResponse (Call call, Response […]

如何在Retrofit 2中上传图像文件

我有一个像下面的邮递员的形象。 如何在Retrofit 2中做同样的事情。 我已经宣布了这样的界面。 @Multipart @POST(“/api/Pharmarcy/UploadImage”) Call uploadPrescriptionImage( @Query(“accessToken”) String token, @Query(“pharmarcyRequestId”) int pharmacyRequestedId, @Part MultipartBody.Part image);

改造2 @path Vs @query

我是新手改造2库。我读了几篇文章作为初学者入门,我设法从我的RESTful API中获取XML数据而不指定参数。在我的方法中生成XML资源如下。 @GET @Path(“/foods”) @Produces(MediaType.APPLICATION_XML) public List getFoodPyramid() { Session session = HibernateUtil.getSessionFactory().openSession(); trans = session.beginTransaction(); List foodList = session.createQuery(“from FoodPyramid”).list(); try { trans.commit(); session.close(); } catch (Exception e) { session.close(); System.err.println(“Food Pyramid fetch ” + e); } System.err.println(“Am in the food modal. . . . . . . .”); return foodList; } 现在当我试图在界面中传递参数时 @GET(“user/{username}/{password}”) […]