1、@Get 空参数(参数通过map集合传递)
/**
* get请求
*
* @param url 请求url
* @param arrayMap 接口参数
* @return 返回数据
*/
@GET
Observable<Object> getBean(@Url String url, @QueryMap() Map<String, String> arrayMap);
@Post 空参数(参数通过map集合传递)
/**
* post请求
*
* @param url 请求url
* @param arrayMap 接口参数
* @return 返回数据
*/
@FormUrlEncoded
@POST
Observable<Object> postBean(@Url String url, @FieldMap() Map<String, String> arrayMap);
2、上传文件 空参数(参数通过map集合传递)
/**
* post上传文件
*
* @param url 请求url
* @param data 请求参数
* @param description 文件描述
* @param file 文件路径
* @return 返回数据
*/
@Multipart
@POST
Observable<Object> uploadFile(@Url String url, @PartMap Map<String, RequestBody> data, @Part("description") RequestBody description,
@Part MultipartBody.Part file);
文件上传调用方法:
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body =
MultipartBody.Part.createFormData("photo_url", file.getName(), requestFile);
String descriptionString = "userPhotoDescription";
RequestBody description =
RequestBody.create(
MediaType.parse("multipart/form-data"), descriptionString);
<**其中 photo_url 为key **>
文件上传需传输参数时需转换为RequestBody,转换方法如下:
/**
* 文件上传参数转换
*
* @param value 传入值
* @return 返回值
*/
public static RequestBody toRequestBody(String value) {
RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), value);
return requestBody;
}
判断一串Json数据是JSONObject还是JSONArray:
private DtoResult questionApiResult(String responseInfo) {
DtoQuestionResult dtoQuestionResult = new GsonUtils<DtoQuestionResult>().fromJson(responseInfo, DtoQuestionResult.class);
Gson gson = new Gson();
DtoResult dtoResult = new DtoResult();
dtoResult.errmsg = dtoQuestionResult.message;
dtoResult.dataObject = dtoQuestionResult.data;
if (dtoResult.dataObject != null && classOfT != null) {
try {
Object json = new JSONTokener(gson.toJson(dtoResult.dataObject)).nextValue();
if (json instanceof JSONObject) {
dtoResult.dataObject = gson.fromJson(gson.toJson(dtoResult.dataObject), classOfT);
} else if (json instanceof JSONArray) {
dtoResult.dataObject = getJSONArray(dtoResult.dataObject, classOfT);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return dtoResult;
}
获取JSONArray实体转换结果:
/**
* 获取JSONArray转换实体类集合
*
* @param data 数据源
* @param classOfT 实体类
* @return List集合 List<T> listT
*/
private <T> List<T> getJSONArray(Object data, Class<T> classOfT) {
List<T> list = new ArrayList<>();
try {
Gson gson = new Gson();
JsonArray arry = new JsonParser().parse(gson.toJson(data)).getAsJsonArray();
for (JsonElement jsonElement : arry) {
list.add(gson.fromJson(jsonElement, classOfT));
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}