下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中如何使用retrofit上传文件
本篇文章为大家展示了Android中如何使用retrofit上传文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.AndroidMainfest.xml中加入权限
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.CAMERA"/>
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>添加依赖
//fresco
compile
'com.facebook.fresco:fresco:+'
//支持gif
compile
'com.facebook.fresco:animated-gif:+'
compile
'com.squareup.okhttp3:okhttp:3.9.1'
compile
'com.google.code.gson:gson:2.8.1'
//retrofit
compile
'com.squareup.retrofit2:retrofit:+'
compile
'com.squareup.retrofit2:converter-gson:+'
//Rxjava2
compile
'io.reactivex.rxjava2:rxjava:+'
compile
'io.reactivex.rxjava2:rxandroid:+'
//让retrofit支持Rxjava2
compile
'com.squareup.retrofit2:adapter-rxjava2:+'
compile
'com.squareup.okhttp3:logging-interceptor:3.9.1'1.网络请求public
class
RetrofitUtils
{
//自定义路径
public
static
final
String
BASE_URL
="05/";
private
final
Retrofit
mRetrofit;
public
static
class
SINGLE_HOLDER{
public
static
final
RetiofitUtils
INSTANCE
=
new
RetiofitUtils(BASE_URL);
}
public
static
RetrofitUtils
getInstance(){
return
SINGLE_HOLDER.INSTANCE;
}
r
private
RetrofitUtils(String
baseUrl){
mRetrofit
=
buildRetrofit();
}
//
private
OkHttpClient
buildOkHttpClient(){
HttpLoggingInterceptor
logging
=
new
HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
return
new
OkHttpClient.Builder()
.connectTimeout(10000,
TimeUnit.MILLISECONDS)
.addInterceptor(new
Intercept())//拦截器
.addInterceptor(logging)
.build();
}
//创建retrofit
private
Retrofit
buildRetrofit(){
return
new
Retrofit.Builder()
.client(buildOkHttpClient())
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
//泛型类
public
<T>
T
create(Class<T>
tClass){
return
mRetrofit.create(tClass);
}
}拦截器:/article/133257.htm路径接口public
interface
RetiofitVpi
{
//查找用户信息
@GET("user/getUserInfo")
Observable<UserBean>
userBean(@Query("uid")
String
uid);
//上传文件
@Multipart
@POST("file/upload")
Observable<FileBean>
uploadFile(@Query("uid")
String
uid,
@Part("file\";
filename=\"avatar.jpg")
RequestBody
file);
}anim文件夹下的文件<!--android<set>标签代表一系列的帧动画,可以在里面添加动画效果
-->
<set
xmlns:android="/apk/res/android"
>
<translate
android:duration="2000"
android:fromYDelta="100%p"
android:toYDelta="0"
/>
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set><!--android<set>标签代表一系列的帧动画,可以在里面添加动画效果
-->
<set
xmlns:android="/apk/res/android"
>
<translate
android:duration="2000"
android:fromYDelta="100%p"
android:toYDelta="0"
/>
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set>布局<com.facebook.drawee.view.SimpleDraweeView
android:layout_centerInParent="true"
android:id="@+id/simple_drawee_view"
android:layout_width="300dp"
android:layout_height="300dp"
fresco:failureImage="@drawable/icon_failure"
fresco:progressBarImage="@drawable/icon_placeholder"
fresco:placeholderImage="@drawable/icon"
fresco:progressBarAutoRotateInterval="1000"
fresco:retryImageScaleType="centerInside"
fresco:roundAsCircle="true"
tools:layout_editor_absoluteY="41dp"
tools:layout_editor_absoluteX="55dp"
/>mainActiviy,请求要替换头像的接口的用户uidpublic
class
MainActivity
extends
AppCompatActivity
{
private
SimpleDraweeView
simple_drawee_view;
private
PopupWindow
window;
private
String
path;
private
Uri
uri;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
//初始化
Fresco.initialize(this);
setContentView(R.layout.activity_main);
//获取到头像的布局
simple_drawee_view
=
(SimpleDraweeView)
findViewById(R.id.simple_drawee_view);
path
=
Environment.getExternalStorageDirectory()
+
"/head.jpg";
//获取uid
Observable<UserBean>
userInfo
=
userBean("3600");
userInfo
//需要在io子线程联网
.subscribeOn(Schedulers.io())
//需要在主线程更新UI
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new
Consumer<UserBean>()
{
@Override
public
void
accept(UserBean
nicknameBean)
throws
Exception
{
UserBean.DataBean
data
=
nicknameBean.getData();
uri
=
Uri.parse(data.getIcon());
simple_drawee_view.setImageURI(uri);
}
},
new
Consumer<Throwable>()
{
@Override
public
void
accept(Throwable
throwable)
throws
Exception
{
Log.e("MainActivity",throwable.toString());
}
});
//给上传头像的控件设置点击事件
simple_drawee_view.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
on
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电气课程设计结论
- 篮球教练课程设计
- 电控课程设计报告
- 幼儿园大班游戏课程设计
- 打造小蛮腰课程设计
- 水利施工慕课课程设计
- 汽轮机装配与调试技术考核试卷
- 登录页面课程设计
- 电热梳子加热速度考核试卷
- 碳素材料在药物传递系统的研究考核试卷
- 建设工程环保专项方案
- 中小企业内部控制与风险管理(第二版)项目一:内部控制与风险管理基础
- DB13T 5427-2021 水体底泥洗脱生态恢复工程技术指南
- 双减工作教师责任书
- 声艺 EPM8操作手册
- 西北农林科技大学专业学位研究生课程案例库建设项目申请书(MBA)
- 聚乙烯醇纤维zhanshi
- 外墙保温、真石漆施工技术交底
- 演播室的艺术:现场导播切换技巧
- 盾构带压开仓施工方案
- 高压开关柜试验报告(完)
评论
0/150
提交评论