Retrofit获取网络数据
来源:互联网 发布:多啦衣梦新式网络传销 编辑:程序博客网 时间:2024/06/01 07:28
1.1导包:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
1.2添加权限 因为后期有可能用到 就提前写了
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.自己创建个类 按Alt+S 然后把网址里面的内容放进去
3.写一个接口
4.接口代码
//http://www.moviebase.cn/uread/app/splash/splashList?platform=2&appVersion=1.7.0&osType=2public interface jiekou { @GET("splash/splashList") Call<gson> getgson(@QueryMap ArrayMap<String,String> pa);}
5.主函数
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Retrofit.Builder re=new Retrofit.Builder(); re.baseUrl("http://www.moviebase.cn/uread/app/"); re.addConverterFactory(GsonConverterFactory.create()); Retrofit bu = re.build(); jiekou jiekou = bu.create(jiekou.class); ArrayMap<String, String> arr = new ArrayMap<>(); arr.put("platform","2"); arr.put("appVersion","1.7.0"); arr.put("osType","2"); Call<gson> get = jiekou.getgson(arr); get.enqueue(new Callback<gson>() { @Override public void onResponse(Response<gson> response, Retrofit retrofit) { gson body = response.body(); String imgurl = body.getSplash().getImgurl(); Log.d("aaa", imgurl); } @Override public void onFailure(Throwable t) { Log.d("aaa", "onFailure: "+t.toString()); } }); }}
6.布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="comqq.example.hasee.myapplication.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /></RelativeLayout>
7.如果你想上传文件并且上传数据可以看一看下面的的写法 主要改一改接口和主代码内容就可以了
在接口里面接着写代码
http://cache.video.iqiyi.com/MyUploadServer/servlet/MyUploadServlet 这是服务器地址
//上传文件并携带参数 @POST("MyUploadServer/servlet/MyUploadServlet") Call<ResponseBody> up(@Body MultipartBody multipartBody);
然后在代码中写以下代码
//这个就你在手机当中的文件 也就是想要上传的文件 Environment.getExternalStorageDirectory()这是获取安卓文件地址 //当然这个文件你的手机上是要有的 文件直接放在文件(默认)管理器打开的目录就行了 File file1 = new File(Environment.getExternalStorageDirectory(), "a.txt"); File file2 = new File(Environment.getExternalStorageDirectory(), "b.txt"); MultipartBody.Builder builder = new MultipartBody.Builder();//这是得到实例化 RequestBody requestBody1 = MultipartBody.create(MultipartBody.FORM, file1);//将文件打包 RequestBody requestBody2 = MultipartBody.create(MultipartBody.FORM, file2);//将文件打包 MultipartBody bu = builder .addFormDataPart("file", file1.getName(), requestBody1)//得到文件的名字 .addFormDataPart("file", file2.getName(), requestBody2)//得到文件的名字 .addFormDataPart("username", "1111111111111111111111111111111111")//这个就是携带参数上传 只有服务器能看见 .setType(MultipartBody.FORM)//这是这是样式 .build(); new Retrofit.Builder()//下面的步骤就没有什么差别了 .baseUrl("http://169.254.38.24/") .client(new OkHttpClient.Builder().build()) .build() .create(getgson.class) .up(bu)//这个up就是在接口定义的名字 .enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { try { Toast.makeText(MainActivity.this,response.body().string()+"11", Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { Toast.makeText(MainActivity.this,t.getMessage(), Toast.LENGTH_SHORT).show(); } });
8.当然Retrofit的功能有很多 比如文件下载(支持大文件支持变下变存放) 这一步要用到线程 因为这是耗时操作
接口定义
@Streaming @GET Call<ResponseBody> download(@Url String fileUrl);
主代码
final String baseUrl = "http://1251603248.vod2.myqcloud.com/"; final String downUrl = "http://1251603248.vod2.myqcloud.com/4c9adaa7vodtransgzp1251603248/30e0819d9031868223192061218/v.f40.mp4"; new Thread(new Runnable() { @Override public void run() { try { Response<ResponseBody> response = new Retrofit.Builder() .baseUrl(baseUrl) .client(okHttpClient) .build() .create(NetService.class) .download(downUrl) .execute(); if (response.isSuccessful()) { deliveryHandler.post(new Runnable() { @Override public void run() { showResult("服务器连接成功!"); } }); boolean ok = writeDisk(response.body()); Log.i(TAG, STR_TAG + "run: 下载:" + ok); if (ok) { deliveryHandler.post(new Runnable() { @Override public void run() { tv_content.setText("下载完成!!"); } }); } } else { deliveryHandler.post(new Runnable() { @Override public void run() { showResult("下载失败!"); } }); } } catch (IOException e) { e.printStackTrace(); } } }).start();
阅读全文
0 0
- Retrofit获取网络数据
- Retrofit获取网络数据
- 采用retrofit获取网络数据
- Retrofit+okhttp拦截器获取网络数据
- andriod——Retrofit+Fresco+MVP网络获取数据
- 使用Retrofit获取JSON数据
- 根据地址, 通过Retrofit 获取网络数据, 显示在RecycleView 中
- andriod——Retrofit+Fresco+MVP+Fragment判断网络获取数据
- 根据地址, 通过Retrofit 获取网络数据, 显示在RecycleView 中
- 利用Retrofit, RxJava获取网络内容
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- Retrofit 请求网络数据 并适配到 ListView
- MVP+Retrofit+RecyclerView实现加载网络数据
- Retrofit网络请求数据的使用
- Retrofit网络请求+GreenDao数据缓存
- GreenDao+ButterKnife+Retrofit+Fresco展示网络数据
- Android 用Retrofit进行网络获取数据,recyclerview进行展示在Fragment里,并存入到GreenDao数据库中
- Android网络请求使用Retrofit+OkHttp,如何获取请求参数 ?
- 爱润妍app系统开发
- 3.3
- CSS伪类选择器(结构伪类)
- vue-cli + webpack + vue-router
- auto、register、extern修饰符
- Retrofit获取网络数据
- 连续数的平方和立方
- 指针
- 栈(作业三)
- python画图
- MATLAB相关系数计算
- 6.6 编程计算第一年年初他应存入银行多少钱
- 最新JQuery前端框架
- OJF4ck Me