[Android] Retrofit2.0 GET和POST方式请求
2016-10-04 16:36
375 查看
Retrofit 是什么?
根据官网的解释:Retrofit is a type-safe HTTP client for Android and java.我理解为是一种更好的与接口进行通信的机制。
Retrofit2.0的使用
添加依赖:在 build.gradle(app) 内
不要忘了在 Manifest.xml文件中添加所需的网络权限
接下来将 API 接口转成一个 Java 接口
我自己测试的 API 接口为:
这里可以用别的接口。
转化写成 Java 接口为:
定义 Data,获取 json 数据:
构造一个 Retrofit 对象:
注意这里在实际操作中,localhost要改成你的本地IP
进入命令提示符:输入 ipconfig,看到 IPv4地址,将localhost修改成对应地址。
接着,创建 API 接口对象,这里 APIInterface 是我们创建的接口:
使用 MyInterface 创建一个『请求对象』:
注意这里的 .getData(“myData”) 取代了前面的 {input}。到这里,我们要访问的地址就成了:
可以看出这样的方式有利于我们使用不同参数访问同一个 Web API 接口,比如你可以随便改成 .getData(“Data”)
最后,发送请求。
在这里,如果设置了点击事件触发
的话,第二次点击会造成程序崩溃,可以修改为
关于 post 请求的方法:
转化接口时将 get 方法修改成以下:
大功告成,关于一些其他的内容还在摸索中!
根据官网的解释:Retrofit is a type-safe HTTP client for Android and java.我理解为是一种更好的与接口进行通信的机制。
Retrofit2.0的使用
添加依赖:在 build.gradle(app) 内
compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0'
不要忘了在 Manifest.xml文件中添加所需的网络权限
<uses-permission android:name="android.permission.INTERNET" />
接下来将 API 接口转成一个 Java 接口
我自己测试的 API 接口为:
http://localhost:8080/data/myData
这里可以用别的接口。
转化写成 Java 接口为:
public interface MyInterface { @GET("data/{input}") Call<Data> getdata(@Path("input") String input); }
定义 Data,获取 json 数据:
public class Data { private int id; private String name; 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; } }
构造一个 Retrofit 对象:
Retrofit retrofit= new Retrofit.Builder() .baseUrl("http://localhost:8080/") .addConverterFactory(GsonConverterFactory.create()) .build();
注意这里在实际操作中,localhost要改成你的本地IP
进入命令提示符:输入 ipconfig,看到 IPv4地址,将localhost修改成对应地址。
接着,创建 API 接口对象,这里 APIInterface 是我们创建的接口:
MyInterface service = retrofit.create(MyInterface.class);
使用 MyInterface 创建一个『请求对象』:
Call<Data> data = service.getData("myData");
注意这里的 .getData(“myData”) 取代了前面的 {input}。到这里,我们要访问的地址就成了:
http://localhost:8080/data/myData
可以看出这样的方式有利于我们使用不同参数访问同一个 Web API 接口,比如你可以随便改成 .getData(“Data”)
最后,发送请求。
data.clone().enqueue(new Callback<Data>() { @Override public void onResponse(Call<Data> call, Response<Data> response) { Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show(); id.setText("Id is :" + response.body().getId()); name.setText("The name is :"+response.body().getName()); } @Override public void onFailure(Call<Data> call, Throwable t) { t.getMessage(); } });
在这里,如果设置了点击事件触发
data.getData()
的话,第二次点击会造成程序崩溃,可以修改为
data.clone.getData()
关于 post 请求的方法:
转化接口时将 get 方法修改成以下:
public interface MyInterface { @FormUrlEncoded @POST("data/myData") Call<Data> getData(@Field("id") int id,@Field("name") String name); } Call<Data> data = service.getData("2","张三");
大功告成,关于一些其他的内容还在摸索中!
相关文章推荐
- 初学者---Android (简单总结)Retrofit请求方式之get,post
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- android的http请求get和post请求方式
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- android之使用get和post方式向服务器提交请求
- android之使用get和post方式向服务器提交请求
- android 向serverGet和Post请求的两种方式,android向server发送文件,自己组装协议和借助第三方开源
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- android中用get和post方式向服务器提交请求
- Android 以Http协议 使用get和post方式请求站点
- android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- Android使用HttpClient完成Post和Get方式的联网请求
- android之使用get和post方式向服务器提交请求
- Android中两种请求方式HttpGet和HttpPost验证用户登录
- android中post和get两种方式发送请求