时间:2021-05-20
之前使用Retrofit都是将JSON串转化为POJO对象,针对不同的业务协议,定义相应的接口和参数列表。但是此种方式一般用在自己内部协议基础上,具体大的项目中,有些第三方的集成功能,一般都采用统一的方式即请求JSON和回应JSON进行数据交互,不可能每个第三方协议都会去定义与协议相应的POJO对象。
HTTP肯定有GET和POST方法,先定义Retrofit Api的interface:
package com.hdnetworklib.network.http;import java.util.Map;import okhttp3.RequestBody;import okhttp3.ResponseBody;import retrofit2.Call;import retrofit2.http.Body;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.QueryMap;import retrofit2.http.Url;/** * Created by wangyuhang@evergrande.cn on 2017/8/23 0023. */public interface RetrofitServiceApi { @POST Call<ResponseBody> reqPost(@Url String url, @Body RequestBody requestBody); @GET Call<ResponseBody> reqGet(@Url String url, @QueryMap Map<String, String> options); @GET Call<ResponseBody> reqGet(@Url String url);}1、POST方式,采用指定完整的URL,reqeustBody就是后面业务要传入的完整JSON串
2、GET方式,后面的options就是一个Map,业务参数键值就存在这个里面,URL里面不需要带值。
3、GET方式,与2不同的是没有options,这样就键值对全部带在URL里面,类似于这样的格式:http://112.124.22.238:8081/course_api/wares/hot?pageSize=1&curPage=1
接下来就是具体对业务的接口了,提供POST和GET两个请求接口调用:
package com.hdnetworklib.network.http;import android.util.Log;import java.io.IOException;import java.util.Map;import okhttp3.MediaType;import okhttp3.RequestBody;import okhttp3.ResponseBody;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by wangyuhang@evergrande.cn on 2017/7/12 0012. */public class HttpClient { private static final String TAG = "HttpClient"; private static volatile HttpClient instance; private HttpClient() { } public static HttpClient getInstance() { if (instance == null) { synchronized (HttpClient.class) { if (instance == null) { instance = new HttpClient(); } } } return instance; } /** * Http Post请求 * * @param req_id 请求编号 * @param method 请求业务方法 * @param url 请求的URL * @param jsonData POST需要所带参数(JSON串格式) * @param callback 回调接口 */ public void reqPostHttp(final int req_id, final String method, String url, String jsonData, final HttpCallback callback) { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://.hdnetworklib.network.http;/** * Created by wangyuhang@evergrande.cn on 2017/8/23 0023. */public class HttpResMsg { private Integer req_id; private String method; private String data; public HttpResMsg() { } public HttpResMsg(int req_id, String method, String data) { this.req_id = req_id; this.method = method; this.data = data; } public Integer getReq_id() { return req_id; } public void setReq_id(Integer req_id) { this.req_id = req_id; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public String getData() { return data; } public void setData(String data) { this.data = data; }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Json生成与解析JSON常用与服务器进行数据交互,JSON中“{}”表示JSONObject,“[]”表示JSONArray如下json数据:1{"singe
为什么使用JSON进行数据交互? JSON数据格式比较简单、解析比较方便,在接口调用及HTML页面Ajax调用时较常用。JSON交互方式请求是Key/Valu
一.使用vue-resource插件进行数据交互式,返回的并不是直接的json数据,其实还封装了一层。如下代码:直接使用res.result.list取不到数据
做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查出数据并以json字
在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间