Retrofit基础之:GET与POST请求
来源:互联网 发布:杭州华智软件 编辑:程序博客网 时间:2024/06/05 14:12
Retrofit是大名鼎鼎的Square公司搞出来的一个网络请求框架。其本身是对okhttp做了一层封装,网络请求都交给给了Okhttp。 Retrofit只需要通过简单的配置就能进行网络请求。开源地址:http://square.github.io/retrofit/ 开始学点最简单地GET及POST请求,直接上代码,文字表达见注释: 第一步:首先定义接口类:
/** * description:接口定义,定义网络请求的路径 * 作者:ldm * 时间:20172017/4/28 09:58 * 邮箱:1786911211@qq.com */public interface RetrofitApi { //GET方式请求,对应的注解是@GET @GET("users/{user}/repos") Call<List<GithubModel>> getUserInfo(@Path("user") String user); //GET方式请求,对应的注解是@POST @POST("mobile/login.json") Call<ResponseModel<String>> login(@Body UserModel userModel);//POST请求方式,@Body中则是传入的参数,会转成json格式传到服务器}
第二步:确实接口请求参数及返回数据格式,定义实体类:
1,示例中GET方式返回数据对应 实体类,有点长,太长
/** * description: * 作者:ldm * 时间:20172017/4/28 09:59 * 邮箱:1786911211@qq.com */public class GithubModel { private int id; private String name; private String full_name; private OwnerBean owner; @SerializedName("private") private boolean privateX; private String html_url; private String description; private boolean fork; private String url; private String forks_url; private String keys_url; private String collaborators_url; private String teams_url; private String hooks_url; private String issue_events_url; private String events_url; private String assignees_url; private String branches_url; private String tags_url; private String blobs_url; private String git_tags_url; private String git_refs_url; private String trees_url; private String statuses_url; private String languages_url; private String stargazers_url; private String contributors_url; private String subscribers_url; private String subscription_url; private String commits_url; private String git_commits_url; private String comments_url; private String issue_comment_url; private String contents_url; private String compare_url; private String merges_url; private String archive_url; private String downloads_url; private String issues_url; private String pulls_url; private String milestones_url; private String notifications_url; private String labels_url; private String releases_url; private String deployments_url; private String created_at; private String updated_at; private String pushed_at; private String git_url; private String ssh_url; private String clone_url; private String svn_url; private String homepage; private int size; private int stargazers_count; private int watchers_count; private String language; private boolean has_issues; private boolean has_projects; private boolean has_downloads; private boolean has_wiki; private boolean has_pages; private int forks_count; private Object mirror_url; private int open_issues_count; private int forks; private int open_issues; private int watchers; private String default_branch; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFull_name() { return full_name; } public void setFull_name(String full_name) { this.full_name = full_name; } public OwnerBean getOwner() { return owner; } public void setOwner(OwnerBean owner) { this.owner = owner; } public boolean isPrivateX() { return privateX; } public void setPrivateX(boolean privateX) { this.privateX = privateX; } public String getHtml_url() { return html_url; } public void setHtml_url(String html_url) { this.html_url = html_url; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isFork() { return fork; } public void setFork(boolean fork) { this.fork = fork; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getForks_url() { return forks_url; } public void setForks_url(String forks_url) { this.forks_url = forks_url; } public String getKeys_url() { return keys_url; } public void setKeys_url(String keys_url) { this.keys_url = keys_url; } public String getCollaborators_url() { return collaborators_url; } public void setCollaborators_url(String collaborators_url) { this.collaborators_url = collaborators_url; } public String getTeams_url() { return teams_url; } public void setTeams_url(String teams_url) { this.teams_url = teams_url; } public String getHooks_url() { return hooks_url; } public void setHooks_url(String hooks_url) { this.hooks_url = hooks_url; } public String getIssue_events_url() { return issue_events_url; } public void setIssue_events_url(String issue_events_url) { this.issue_events_url = issue_events_url; } public String getEvents_url() { return events_url; } public void setEvents_url(String events_url) { this.events_url = events_url; } public String getAssignees_url() { return assignees_url; } public void setAssignees_url(String assignees_url) { this.assignees_url = assignees_url; } public String getBranches_url() { return branches_url; } public void setBranches_url(String branches_url) { this.branches_url = branches_url; } public String getTags_url() { return tags_url; } public void setTags_url(String tags_url) { this.tags_url = tags_url; } public String getBlobs_url() { return blobs_url; } public void setBlobs_url(String blobs_url) { this.blobs_url = blobs_url; } public String getGit_tags_url() { return git_tags_url; } public void setGit_tags_url(String git_tags_url) { this.git_tags_url = git_tags_url; } public String getGit_refs_url() { return git_refs_url; } public void setGit_refs_url(String git_refs_url) { this.git_refs_url = git_refs_url; } public String getTrees_url() { return trees_url; } public void setTrees_url(String trees_url) { this.trees_url = trees_url; } public String getStatuses_url() { return statuses_url; } public void setStatuses_url(String statuses_url) { this.statuses_url = statuses_url; } public String getLanguages_url() { return languages_url; } public void setLanguages_url(String languages_url) { this.languages_url = languages_url; } public String getStargazers_url() { return stargazers_url; } public void setStargazers_url(String stargazers_url) { this.stargazers_url = stargazers_url; } public String getContributors_url() { return contributors_url; } public void setContributors_url(String contributors_url) { this.contributors_url = contributors_url; } public String getSubscribers_url() { return subscribers_url; } public void setSubscribers_url(String subscribers_url) { this.subscribers_url = subscribers_url; } public String getSubscription_url() { return subscription_url; } public void setSubscription_url(String subscription_url) { this.subscription_url = subscription_url; } public String getCommits_url() { return commits_url; } public void setCommits_url(String commits_url) { this.commits_url = commits_url; } public String getGit_commits_url() { return git_commits_url; } public void setGit_commits_url(String git_commits_url) { this.git_commits_url = git_commits_url; } public String getComments_url() { return comments_url; } public void setComments_url(String comments_url) { this.comments_url = comments_url; } public String getIssue_comment_url() { return issue_comment_url; } public void setIssue_comment_url(String issue_comment_url) { this.issue_comment_url = issue_comment_url; } public String getContents_url() { return contents_url; } public void setContents_url(String contents_url) { this.contents_url = contents_url; } public String getCompare_url() { return compare_url; } public void setCompare_url(String compare_url) { this.compare_url = compare_url; } public String getMerges_url() { return merges_url; } public void setMerges_url(String merges_url) { this.merges_url = merges_url; } public String getArchive_url() { return archive_url; } public void setArchive_url(String archive_url) { this.archive_url = archive_url; } public String getDownloads_url() { return downloads_url; } public void setDownloads_url(String downloads_url) { this.downloads_url = downloads_url; } public String getIssues_url() { return issues_url; } public void setIssues_url(String issues_url) { this.issues_url = issues_url; } public String getPulls_url() { return pulls_url; } public void setPulls_url(String pulls_url) { this.pulls_url = pulls_url; } public String getMilestones_url() { return milestones_url; } public void setMilestones_url(String milestones_url) { this.milestones_url = milestones_url; } public String getNotifications_url() { return notifications_url; } public void setNotifications_url(String notifications_url) { this.notifications_url = notifications_url; } public String getLabels_url() { return labels_url; } public void setLabels_url(String labels_url) { this.labels_url = labels_url; } public String getReleases_url() { return releases_url; } public void setReleases_url(String releases_url) { this.releases_url = releases_url; } public String getDeployments_url() { return deployments_url; } public void setDeployments_url(String deployments_url) { this.deployments_url = deployments_url; } public String getCreated_at() { return created_at; } public void setCreated_at(String created_at) { this.created_at = created_at; } public String getUpdated_at() { return updated_at; } public void setUpdated_at(String updated_at) { this.updated_at = updated_at; } public String getPushed_at() { return pushed_at; } public void setPushed_at(String pushed_at) { this.pushed_at = pushed_at; } public String getGit_url() { return git_url; } public void setGit_url(String git_url) { this.git_url = git_url; } public String getSsh_url() { return ssh_url; } public void setSsh_url(String ssh_url) { this.ssh_url = ssh_url; } public String getClone_url() { return clone_url; } public void setClone_url(String clone_url) { this.clone_url = clone_url; } public String getSvn_url() { return svn_url; } public void setSvn_url(String svn_url) { this.svn_url = svn_url; } public String getHomepage() { return homepage; } public void setHomepage(String homepage) { this.homepage = homepage; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } public int getStargazers_count() { return stargazers_count; } public void setStargazers_count(int stargazers_count) { this.stargazers_count = stargazers_count; } public int getWatchers_count() { return watchers_count; } public void setWatchers_count(int watchers_count) { this.watchers_count = watchers_count; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public boolean isHas_issues() { return has_issues; } public void setHas_issues(boolean has_issues) { this.has_issues = has_issues; } public boolean isHas_projects() { return has_projects; } public void setHas_projects(boolean has_projects) { this.has_projects = has_projects; } public boolean isHas_downloads() { return has_downloads; } public void setHas_downloads(boolean has_downloads) { this.has_downloads = has_downloads; } public boolean isHas_wiki() { return has_wiki; } public void setHas_wiki(boolean has_wiki) { this.has_wiki = has_wiki; } public boolean isHas_pages() { return has_pages; } public void setHas_pages(boolean has_pages) { this.has_pages = has_pages; } public int getForks_count() { return forks_count; } public void setForks_count(int forks_count) { this.forks_count = forks_count; } public Object getMirror_url() { return mirror_url; } public void setMirror_url(Object mirror_url) { this.mirror_url = mirror_url; } public int getOpen_issues_count() { return open_issues_count; } public void setOpen_issues_count(int open_issues_count) { this.open_issues_count = open_issues_count; } public int getForks() { return forks; } public void setForks(int forks) { this.forks = forks; } public int getOpen_issues() { return open_issues; } public void setOpen_issues(int open_issues) { this.open_issues = open_issues; } public int getWatchers() { return watchers; } public void setWatchers(int watchers) { this.watchers = watchers; } public String getDefault_branch() { return default_branch; } public void setDefault_branch(String default_branch) { this.default_branch = default_branch; } public static class OwnerBean { private String login; private int id; private String avatar_url; private String gravatar_id; private String url; private String html_url; private String followers_url; private String following_url; private String gists_url; private String starred_url; private String subscriptions_url; private String organizations_url; private String repos_url; private String events_url; private String received_events_url; private String type; private boolean site_admin; public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAvatar_url() { return avatar_url; } public void setAvatar_url(String avatar_url) { this.avatar_url = avatar_url; } public String getGravatar_id() { return gravatar_id; } public void setGravatar_id(String gravatar_id) { this.gravatar_id = gravatar_id; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getHtml_url() { return html_url; } public void setHtml_url(String html_url) { this.html_url = html_url; } public String getFollowers_url() { return followers_url; } public void setFollowers_url(String followers_url) { this.followers_url = followers_url; } public String getFollowing_url() { return following_url; } public void setFollowing_url(String following_url) { this.following_url = following_url; } public String getGists_url() { return gists_url; } public void setGists_url(String gists_url) { this.gists_url = gists_url; } public String getStarred_url() { return starred_url; } public void setStarred_url(String starred_url) { this.starred_url = starred_url; } public String getSubscriptions_url() { return subscriptions_url; } public void setSubscriptions_url(String subscriptions_url) { this.subscriptions_url = subscriptions_url; } public String getOrganizations_url() { return organizations_url; } public void setOrganizations_url(String organizations_url) { this.organizations_url = organizations_url; } public String getRepos_url() { return repos_url; } public void setRepos_url(String repos_url) { this.repos_url = repos_url; } public String getEvents_url() { return events_url; } public void setEvents_url(String events_url) { this.events_url = events_url; } public String getReceived_events_url() { return received_events_url; } public void setReceived_events_url(String received_events_url) { this.received_events_url = received_events_url; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isSite_admin() { return site_admin; } public void setSite_admin(boolean site_admin) { this.site_admin = site_admin; } }}
2,POST请求参数及响应实体类:
public class UserModel { private String userName; private String userPwd; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; }}
public class ResponseModel<T> implements Serializable { //请求结果响应码:0表示服务器返回成功,其它表示失败 private int code; //信息提示,如成功则提示操作成功,失败则提示失败原因 private String message; //服务器返回的数据 private T result; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getResult() { return result; } public void setResult(T result) { this.result = result; }}
第三步:在代码中实现网络请求:
public class RetrofitActivity extends AppCompatActivity implements View.OnClickListener { private Button retrofit_get; private Button retrofit_post; private TextView result_tv; private static final String GET_BASE_URL = "https://api.github.com/"; private static final String POST_BASE_URL = "http://192.168.2.13:8083/"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_retrofit); initViews(); } private void initViews() { this.result_tv = (TextView) findViewById(R.id.result_tv); this.retrofit_get = (Button) findViewById(R.id.retrofit_get); this.retrofit_post = (Button) findViewById(R.id.retrofit_post); this.retrofit_get.setOnClickListener(this); this.retrofit_post.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.retrofit_get: requestByGET("ldm520"); break; case R.id.retrofit_post: UserModel model = new UserModel(); model.setUserName("admin"); model.setUserPwd("123456"); requestByPOST(model); break; } } /** * @description 通过GET方法进行网络请求 * @author ldm * @time 2017/4/28 10:38 */ private void requestByGET(String user) { //获取实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl(GET_BASE_URL)//设置baseUrl .addConverterFactory(GsonConverterFactory.create())//添加JSON对应转换器 .build(); //通过Retrofit.create()方法获取api RetrofitApi api = retrofit.create(RetrofitApi.class); //完整的get请求地址就是:https://api.github.com/users/ldm520/repos Call<List<GithubModel>> responseCall = api.getUserInfo(user); //采用异步请求 responseCall.enqueue(new Callback<List<GithubModel>>() { @Override public void onResponse(Call<List<GithubModel>> call, Response<List<GithubModel>> response) { //获取响应结果 List<GithubModel> result = response.body(); if (result.size() > 0) { result_tv.setText("共获取到" + result.size() + "条数据,第一条数据部分内容是:" + "\n blob_url:" + result.get(0).getBlobs_url() + "\n description:" + result.get(0).getDescription() + "..."); } } @Override public void onFailure(Call<List<GithubModel>> call, Throwable t) { Toast.makeText(RetrofitActivity.this, "请求失败", Toast.LENGTH_LONG).show(); } }); } /** * @description 通过POST方法进行网络请求 * @author ldm * @time 2017/4/28 10:39 */ private void requestByPOST(UserModel model) { //获取实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl(POST_BASE_URL)//设置baseUrl .addConverterFactory(GsonConverterFactory.create())//添加JSON对应转换器 .build(); //通过Retrofit.create()方法获取api RetrofitApi api = retrofit.create(RetrofitApi.class); //完整的get请求地址就是:http://192.168.2.13:8083/mobile/login.json api.login(model).enqueue(new Callback<ResponseModel<String>>() { @Override public void onResponse(Call<ResponseModel<String>> call, Response<ResponseModel<String>> response) { if (response.body().getCode() == 0) { Toast.makeText(RetrofitActivity.this, "登录成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(RetrofitActivity.this, "登录失败", Toast.LENGTH_LONG).show(); } } @Override public void onFailure(Call<ResponseModel<String>> call, Throwable t) { Toast.makeText(RetrofitActivity.this, "登录失败", Toast.LENGTH_LONG).show(); } }); }}
把简单地布局文件也贴下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp"> <Button android:id="@+id/retrofit_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Retrofit之GET请求"/> <Button android:id="@+id/retrofit_post" android:layout_width="match_parent" android:layout_marginTop="15dp" android:layout_height="wrap_content" android:text="Retrofit之POST请求"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/result_tv" android:layout_marginTop="10dp"/></LinearLayout>
刚开始学习Retrofit,代码潦草,有待优化,继续学习中….。对了,不要忘记在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.INTERNET"/>
0 0
- Retrofit基础之:GET与POST请求
- Retrofit的Get与Post请求
- Retrofit基础(get/post请求,上传图片,注册)
- 使用Retrofit结合RxJava实现Get与Post网络请求
- 初学者---Android (简单总结)Retrofit请求方式之get,post
- Retrofit(一)、Retrofit+OkHttp实现简单的Get与Post请求
- 利用Retrofit执行Post、Get请求,通俗易懂
- Retrofit的基本post,get请求
- Retrofit get、post请求用法整理
- Okhttp和Retrofit的get,post请求
- retrofit的 get post 请求 + log日志
- 利用Retrofit执行Post、Get请求,通俗易懂
- Retrofit基础之最简单的get请求方式
- post与get请求
- Android开发之基础-------------Get请求和Post请求
- get请求与post请求
- post请求与get请求
- GET请求与POST请求
- Java之美[从菜鸟到高手演变]之设计模式三
- Linux 文件查找搜索命令find
- Nutch2.3(二)
- java操作图片生成水印升级版
- 压力测试流程指导规范
- Retrofit基础之:GET与POST请求
- win7中装ubuntu16.04
- 删除链表的重复数据
- JAVA面试题总览--JVM知识
- java操作word生成水印
- vim打开多窗口、多文件之间的切换
- Spring与Redis整合
- virtualBox 的NAT网络模式下,在宿主机windows中,通过VNC连接图形化的CentOS虚拟机界面(亲测成功)
- linux环境变量配置与区别