学retrofit2所踩之坑

有大半年没有搞的Android了,这几天重拾Android的,发现这个retrofit2网络框架很强大,灵活,自己看官方文档捣鼓里面的内容官方文档,里面的内容通俗易懂,开始的第一步,引入所需jar

implementation 'com.squareup.retrofit2:retrofit:2.1.0'
    implementation 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

当使用聚合的接口测试时,

http://v.juhe.cn/weixin/query?key=b90904286fe3f9c20f6929f2023a62a3

在类中接口是这样定义的

@GET("query/key={key}")
Call<ResponseBody> getBlog(@Path("key") String  key);

这样写会报一个错误

URL query string "key={key}" must not have replace block. For dynamic query parameters use @Query.

这个是因为我们的接口后面跟着的是查询参数,path是跟路径不参与参数的携带故,下面这种写法:

@GET("query")
Call<ResponseBody> getBlog(@Query("key") String  key);

 Retrofit Retrofit = new Retrofit.Builder().baseUrl("http://v.juhe.cn/weixin/").build();
        BlogService BlogService = Retrofit.create(BlogService.class);
        Call<ResponseBody> call = BlogService.getBlog("b90904286fe3f9c20f6929f2023a62a3");
        // 用法和OkHttp的call如出一辙,
        // 不同的是如果是Android系统回调方法执行在主线程
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    textid.setText(response.body().string());
                    System.out.println(response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

            }
        });


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
retrofit2是一个用于Android和Java平台的类型安全的HTTP客户端库,它可以用来进行网络请求和数据交互。在retrofit2中,可以使用SSE(Server-Sent Events)来进行服务器推送的实现。 SSE是一种在客户端和服务器之间单向实时通信的技术,它允许服务器发送事件数据到客户端,而客户端则可以监听这些事件并做出相应的处理。在retrofit2中,可以通过定义一个接口来实现SSE的处理,如下所示: ```java public interface SSEService { @GET("/events") Call<ResponseBody> getEvents(); } ``` 在这个例子中,我们定义了一个SSEService接口,其中包含一个用于获取事件数据的GET请求。当调用这个接口时,retrofit2会使用OkHttp来建立连接并监听服务器发送的事件数据。 另外,为了处理服务器发送的事件数据,可以使用retrofit2的Call对象和Callback来实现。例如: ```java SSEService service = retrofit.create(SSEService.class); Call<ResponseBody> call = service.getEvents(); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { // 处理服务器发送的事件数据 } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { // 处理请求失败的情况 } }); ``` 通过使用retrofit2的SSE功能,可以很方便地实现客户端和服务器之间的实时事件推送和处理。这使得在Android和Java应用中,可以更加灵活和高效地处理服务器推送的事件数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值