1.上传文件的bean类
package com.example.retrofitdemo.bean;
/**
* Created by Dash on 2018/2/22.
*/
public class UpLoadPicBean {
/**
* msg : 文件上传成功
* code : 0
*/
private String msg;
private String code;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
2.用于对网络请求的描述LoginApiService
package com.example.retrofitdemo;
import com.example.retrofitdemo.bean.UpLoadPicBean;
import com.example.retrofitdemo.bean.UserBean;
import java.util.Map;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
/**
* 用于对网络请求的描述
*/
public interface LoginApService {
@FormUrlEncoded
@POST("user/login")
Call<UserBean> login(@Field("mobile") String mobile, @Field("password") String password);
@FormUrlEncoded
@POST("user/login")
Call<UserBean> login2(@FieldMap Map<String, String> params);
@GET("user/login?mobile=18310830365&password=123456")
Call<UserBean> login3();
@GET("user/login")
Call<UserBean> login4(@Query("mobile") String mobile, @Query("password") String password);
@GET("user/login")
Call<UserBean> login5(@QueryMap Map<String, String> params);
@GET("user/{path}")
Call<UserBean> login6(@Path("path") String path, @QueryMap Map<String, String> params);
@Multipart
@POST("file/upload")
Call<UpLoadPicBean> uploadImg(@Part("uid") RequestBody uid, @Part MultipartBody.Part file);
}
3.网络请求
package com.example.retrofitdemo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.example.retrofitdemo.bean.UpLoadPicBean;
import com.example.retrofitdemo.bean.UserBean;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
String imgUrl;
private File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgUrl = getExternalCacheDir().getPath() + "/" + "header.jpg";
file = new File(imgUrl);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
//创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://www.zhaoapi.cn/")
.addConverterFactory(GsonConverterFactory.create())
.build();
//创建网络请求接口实例
LoginApService loginApService = retrofit.create(LoginApService.class);
/********************************POST第一种用请求***********************************************/
// Call<UserBean> call = loginApService.login("18310830365", "123456");
/*******************************************************************************/
/********************************POST第二种用请求***********************************************/
// Map<String, String> params = new HashMap<>();
// params.put("mobile", "18310830365");
// params.put("password", "123456");
// Call<UserBean> call = loginApService.login2(params);
/*******************************************************************************/
/********************************GET第一种用请求***********************************************/
// Call<UserBean> call = loginApService.login3();
/*******************************************************************************/
/********************************GET第二种用请求***********************************************/
//Call<UserBean> call = loginApService.login4("18310830365","123456");
/*******************************************************************************/
/********************************GET第三种用请求***********************************************/
// Map<String, String> params = new HashMap<>();
// params.put("mobile", "18310830365");
// params.put("password", "123456");
// Call<UserBean> call = loginApService.login5(params);
/*******************************************************************************/
/********************************动态设置路局***********************************************/
Map<String, String> params = new HashMap<>();
params.put("mobile", "18310830365");
params.put("password", "123456");
Call<UserBean> call = loginApService.login6("login", params);
/*******************************************************************************/
//发送网络请求(异步 / 同步)
call.enqueue(new Callback<UserBean>() {
@Override
public void onResponse(Call<UserBean> call, Response<UserBean> response) {
UserBean userBean = response.body();
}
@Override
public void onFailure(Call<UserBean> call, Throwable t) {
}
});
// uploadImg();
}
private void uploadImg() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://www.zhaoapi.cn/")
.addConverterFactory(GsonConverterFactory.create())
.build();
LoginApService loginApService = retrofit.create(LoginApService.class);
MediaType textType = MediaType.parse("text/plain");
RequestBody uid = RequestBody.create(textType, "1235");
RequestBody file = RequestBody.create(MediaType.parse("application/octet-stream"), this.file);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", "header.jpg", file);
Call<UpLoadPicBean> call = loginApService.uploadImg(uid, filePart);
call.enqueue(new Callback<UpLoadPicBean>() {
@Override
public void onResponse(Call<UpLoadPicBean> call, Response<UpLoadPicBean> response) {
UpLoadPicBean upLoadPicBean = response.body();
}
@Override
public void onFailure(Call<UpLoadPicBean> call, Throwable t) {
}
});
}
}