首先老规矩加入所需要的依赖
这里要根据自己的gradle进行适配的依赖,否则会引起不必要的错误!!!
另外Retrofit是基于Okhttp请求,需要进行网络请求,所以这里我们还要加入网络权限:第一条就可以=-=
接下来就是上代码环节了
package com.example.test4_7zfz;
import androidx.appcompat.app.AppCompatActivity;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import android.os.Bundle;
import android.util.Log;
import com.example.test4_7zfz.http.server.GoodsService;
import com.example.test4_7zfz.utils.Constants;
import com.example.test4_7zfz.utils.Entity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
testGetGoodsDetail();
}
private void testGetGoodsDetail() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl( Constants.BASE_URL1 )//设置访问网络地址
.addConverterFactory( GsonConverterFactory.create() )//设置解析方式为Gson
.addCallAdapterFactory( RxJavaCallAdapterFactory.create() )
.build();
GoodsService services = retrofit.create( GoodsService.class );
Observable<Entity> observable = services.getkey( "488c65f3230c0280757b50686d1f1cd5", "asc", "1418816972" ) ;
observable.subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribe( new Observer<Entity>() {
@Override
public void onCompleted() {
}
@Override
public void one rror(Throwable e) {
}
@Override
public void onNext(Entity entity) {
Log.i( "sss", "" + entity.getReason() + "****" + entity.getError_code() + "****" + entity.getResult().getData().toString() );
}
} );
}
}
接口调用+注解
package com.example.test4_7zfz.http.server;
import com.example.test4_7zfz.utils.Entity;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import rx.Observable;
public interface GoodsService {
String getUrl = "joke/content/list.php";
String postUrl = "joke/content/list.php";
//仅此一个位rxjava封装
@GET(getUrl)
Observable<Entity> getkey(
/**
* 传递参数的Get请求
*/
@Query("key") String key,
@Query("sort") String sort,
@Query("time") String time
);
/**
* 封装好Url的Get的请求
*
* @return
*/
@GET(getUrl+"?key=488c65f3230c0280757b50686d1f1cd5&&sort=asc&&time=1418816972")
Call<Entity> get();
/**
* 传递Map键值对的Get请求
**/
@GET(getUrl)
Call<Entity> getmap(@QueryMap Map<String, String> params);
/**传递参数的Post请求
*/
@FormUrlEncoded
@POST(postUrl)
Call<Entity> postkey(@Field("key") String key, @Field("sort") String sort, @Field("time") String time);
/**
** 传递Map键值对的Post请求
*/
@FormUrlEncoded
@POST(postUrl)
Call<Entity> postmap(@FieldMap Map<String, String> map);//
}
建立相应的实体类,利用GsonFormat;
package com.example.test4_7zfz.utils;
import java.io.Serializable;
import java.util.List;
public class Entity implements Serializable {
@Override
public String toString() {
return "Entity{" +
"reason='" + reason + '\'' +
", result=" + result +
", error_code=" + error_code +
'}';
}
/**
* reason : Success
* result : {"data":[{"content":"昨天下班坐公交车回家,白天上班坐着坐多了想站一会儿,\r\n就把座位让给了一个阿姨,阿姨道谢一番开始和我聊天,聊了挺多的。\r\n后来我要下车了,阿姨热情的和我道别。\r\n下车的一瞬间我回头看了一眼,只见那阿姨对着手机说:\u201c儿子,\r\n刚才遇见一个姑娘特不错,可惜长得不好看,不然我肯定帮你要号码!\u201d\r\n靠,阿姨你下车,我保证不打死你!","hashId":"348e7f933774bcaef3ed3f0ecb8e7b19","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"小时候妈妈喂我饭之前会看书,我问她看的什么时。\r\n妈妈总是笑着告诉我:\u201c是《育儿经验宝典》啊!\u201d\r\n我很感动,直到我认识字才发现,妈妈看的是《猪崽饲养手册》。","hashId":"126a79697167f330f3f2339281ccb8b2","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"刚刚在舞蹈学校外接儿子,听到两个已经接到孩子到妈妈在聊天。\r\n妈妈甲:\u201c你闺女这么小就是个美人胚子,大眼睛,双眼皮,瓜子脸。\u201d\r\n妈妈乙:\u201c是啊,长大了不知道要*多少男孩!\u201d","hashId":"a38339d867e4de601b0d77e3b94de0ab","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"\u201c科学研究发现,睡眠不足会带来许多身心伤害:免疫力下降、\r\n记忆力减弱、易衰老、失去平衡等等,从而引发多种疾病。\r\n从科学角度讲,睡懒觉有助于身心健康。\u201d\r\n\u201c所以,李老师,这就是你在课堂上睡觉的原因?\u201d校长生气的问我。","hashId":"7fda08b4f42baf3868d6963aa5f2e9aa","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"做饭的时候发现没食用油了,\r\n就叫五岁的儿子\u201c娃儿,去楼下小商店买壶油,顺便买点姜回来。别搞忘了。\u201d\r\n儿子答应,边出门边念叨\u201c油,姜,油,姜,油,姜,油\u2026\u2026\u2026\u2026\u201d\r\n果然,回来带了瓶酱油\u2026\u2026","hashId":"650fd02f47de7bc4795248295a6bbde2","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"我妈研究了几个新菜,邀请我品尝,\r\n结果我没有给她一个yes,被臭骂了一顿,\r\n要和我断绝关系。找我爸评理,\r\n老头说为了公平起见,我还是尝尝菜吧。\r\n吃完后,老头幽幽的说道,你和我也断绝关系吧。","hashId":"70fa72fdf6038d5a7fb1e00a4db008ae","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我\u2026\u2026","hashId":"c8aa0e4e178fc61fe51d4279cf1df1b3","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"","hashId":"b5deeae99246331671dce4d5f16c7573","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行","hashId":"ab6bcb72f06adf3c485a19fed3e9addb","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?","hashId":"82e537f58a90383a3e85a973c3fae2f3","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。","hashId":"a434476473e613e43949b9fb2e67496a","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:\u201c我终于明白了\u201c落后就要挨打\u201d的道理。\u201d","hashId":"122681bf7fd7a523d1407e802aaa5790","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。","hashId":"276e0d8ebdf8b42789f58c514b7a8b51","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!","hashId":"62cd058131ae047cd76f66f2fdfb7b80","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。","hashId":"d546a6a3faf6cf5c367aac1205f84407","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"女生口中所说的\u201c理工男好萌好棒好想嫁!\u201d,\r\n其实理工男是指\u201c会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥\u201d。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。","hashId":"e3d330e6f7e31df7d99455dbef4e772b","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"\u201c老婆,我想出去玩,\u201d\u201c你去哪玩?\u201d\r\n\u201c我想去凉快的地方还能玩水的地方,\u201d\r\n\u201c没问题,你把空调打开,把卫生间堆的衣服洗了。","hashId":"277ef2566db36a40adf37af3ba164d5d","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"我在网上斗地主,女友在旁边看,问:\u201c斗地主不是三个人玩的吗?\u201d\r\n我说是啊!女友又问:\u201c那怎么上面有四个人的名字,\u201d\r\n我说一个在旁边看的。女友:\u201c那我在你旁边看,怎么没有我的名字?\u201d","hashId":"154ebe2eb9d79d3c30813639ebce9bc9","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"今天去超市,一熊孩纸问我要钱,我一看就知道是坑人的,\r\n就不给。熊孩纸:\u201c好,那你等着。\u201d\r\n我心想大白天你一小逼孩能怎样?去叫人?\r\n我就盯着他看,熊孩纸快走几步到一穿裙子的妹纸那,\r\n二话不说撩起来回头对我喊:\u201c二叔,粉红色的\u201d!","hashId":"1325a29c04ee71154d489b6a97ba7d4f","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"女儿:\u201c妈,我给你买个吸尘器吧,就不用你弯腰扫地了。\u201d\r\n老妈:\u201c不要,浪费钱。\u201d女儿:\u201c我给你买个洗碗机啊,\r\n能省不少事呢。\u201d老妈:\u201c不要,浪费钱。\u201d\r\n女儿:\u201c那你想要什么啊?\u201d\r\n老妈:\u201c什么都不要,这些活你爸都能干。\u201d","hashId":"2b35f672f37ca2cd65aa079d306f7e50","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"}]}
* error_code : 0
*/
private String reason;
private ResultBean result;
private int error_code;
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public ResultBean getResult() {
return result;
}
public void setResult(ResultBean result) {
this.result = result;
}
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
public static class ResultBean {
private List<DataBean> data;
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
@Override
public String toString() {
return "DataBean{" +
"content='" + content + '\'' +
", hashId='" + hashId + '\'' +
", unixtime=" + unixtime +
", updatetime='" + updatetime + '\'' +
'}';
}
/**
* content : 昨天下班坐公交车回家,白天上班坐着坐多了想站一会儿,
就把座位让给了一个阿姨,阿姨道谢一番开始和我聊天,聊了挺多的。
后来我要下车了,阿姨热情的和我道别。
下车的一瞬间我回头看了一眼,只见那阿姨对着手机说:“儿子,
刚才遇见一个姑娘特不错,可惜长得不好看,不然我肯定帮你要号码!”
靠,阿姨你下车,我保证不打死你!
* hashId : 348e7f933774bcaef3ed3f0ecb8e7b19
* unixtime : 1418819032
* updatetime : 2014-12-17 20:23:52
*/
private String content;
private String hashId;
private int unixtime;
private String updatetime;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getHashId() {
return hashId;
}
public void setHashId(String hashId) {
this.hashId = hashId;
}
public int getUnixtime() {
return unixtime;
}
public void setUnixtime(int unixtime) {
this.unixtime = unixtime;
}
public String getUpdatetime() {
return updatetime;
}
public void setUpdatetime(String updatetime) {
this.updatetime = updatetime;
}
}
}
}
还需要数据接口,这里我们用公共类表示
package com.example.test4_7zfz.utils;
/**
* 常量数据类一般会放一些项目中公共的经常使用的数据。比如网络接口调用时的公共url;
*/
public class Constants {
//http://v.juhe.cn/joke/content/list.php?key=488c65f3230c0280757b50686d1f1cd5&&sort=asc&&time=1418816972
public static String BASE_URL1="http://v.juhe.cn/";
}
完整代码就是以上了。此博客仅用于自己每天学习
最后,感谢阅读,卖个萌o(∩_∩)o 哈哈!`