当前位置:首页 » 密码管理 » retrofit请求加密

retrofit请求加密

发布时间: 2022-08-07 07:28:40

⑴ 如何使用retrofit发送网络请求

用Retrofit发送网络请求和解析json的实例
Retrofit是Android的一个非常好用的开源HTTP Request。现在介绍一下Retrofit是如何使用的。。。。
首先是导入Retrofit包,
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
}1234512345

然后是根据API的JSON数据建立一个数据类
URL:http://apistore..com/microservice/weather?citypinyin=beijing
{
errNum: 0,
errMsg: "success",
retData: {
city: "北京", //城市
pinyin: "beijing", //城市拼音
citycode: "101010100", //城市编码
date: "15-02-11", //日期
time: "11:00", //发布时间
postCode: "100000", //邮编
longitude: 116.391, //经度
latitude: 39.904, //维度
altitude: "33", //海拔
weather: "晴", //天气情况
temp: "10", //气温
l_tmp: "-4", //最低气温
h_tmp: "10", //最高气温
WD: "无持续风向", //风向
WS: "微风(<10m/h)", //风力
sunrise: "07:12", //日出时间
sunset: "17:44" //日落时间
}
}
21222324

以下是数据类:
public class Result {
private String errNum;
private String errMsg;
private WeatherData retData;

public void setErrNum(String errNum) {
this.errNum = errNum;
}

public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}

public WeatherData getRetData() {
return retData;
}

public void setRetData(WeatherData retData) {
this.retData = retData;
}

public String getErrNum() {
return errNum;
}

public String getErrMsg() {
return errMsg;
}

}

public class WeatherData {

private String city; //城市
private String pinyin;//城市拼音
private String citycode; //城市编码
private String date; //日期
private String time;//发布时间
private String postCode; //邮编
private String longitude;//经度
private String latitude; //维度
private String altitude;//海拔
private String weather; //天气情况
private String temp; //气温
private String l_tmp; //最低气温
private String h_tmp; //最高气温
private String WD; //风向
private String WS; //风力
private String sunrise;//日出时间
private String sunset;//日落时间

//setter和getter就不贴了

}


新建一个MyService的接口,由于之后要在主线程使用(安卓3.0以上主线程不能同步访问网络),所以这里采用异步获取的方式。故增加了Callback< Result > cb
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;

public interface MyService {
// URI:http://apistore..com/microservice/weather?citypinyin=beijing

@GET("/microservice/weather")
void getResult(@Query("citypinyin") String citypinyin, Callback<Result> cb);

}12345678910111234567891011

使用RestAdapter来实例化MyService;
import retrofit.RestAdapter;

public class MyRestClient {

private static String API_URL = "http://apistore..com";

public static MyService getService() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API_URL)//设置站点路径
.setLogLevel(RestAdapter.LogLevel.FULL)//设置log的级别
.build();

MyService myService = restAdapter.create(MyService.class);

return myService;
}

}

系统调用如下
@Override
public void onStart()
{
super.onStart();
MyRestClient.getService().getResult("beijing",new Callback<Result>() {
@Override
public void success(Result result, Response response) {
Log.i("",result.getRetData().getDate());
}

@Override
public void failure(RetrofitError error) {

}
});

}

别忘了添加网络访问权限哟。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

⑵ 如何使用Retrofit请求非Restful API

1. 首先定义带泛型的返回结果,Retrofit API 的原生结果映射为这种形式: class Result { String ResultMessage; int ResultCode; T Data; } 2. 处理错误的方法和 @朱诗雄 前辈方法差不多,放到作为静态方法放到 RetroUtil 里,这里 ApiExceptio...

⑶ rxjava+retrofit 怎么封装请求参数

定义带泛型的返回结果,Retrofit API 的原生结果映射为这种形式: class Result { String ResultMessage; int ResultCode; T Data; }

⑷ 如何在Retrofit请求里添加Cookie

你可以自定义一个RequestIntercaptor:
String cookieKey = ...
String cookieValue = ...

RestAdapter adapter = new RestAdapter.Builder()
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
// assuming `cookieKey` and `cookieValue` are not null
request.addHeader("Cookie", cookieKey + "=" + cookieValue);
}
})
.setServer("http://...")
.build();

YourService service = adapter.create(YourService.class);
从服务器读取cookies再交给cookie manager管理:
OkHttpClient client = new OkHttpClient();
CustomCookieManager manager = new CustomCookieManager();
client.setCookieHandler(manager);

RestAdapter adapter = new RestAdapter.Builder()
.setClient(new OkClient(client))
...
.build();
CustomeCookieManager如下:
public class CustomCookieManager extends CookieManager {

// The cookie key we're interested in.
private final String SESSION_KEY = "session-key";

/**
* Creates a new instance of this cookie manager accepting all cookies.
*/
public CustomCookieManager() {
super.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
}

@Override
public void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException {

super.put(uri, responseHeaders);

if (responseHeaders == null || responseHeaders.get(Constants.SET_COOKIE_KEY) == null) {
// No cookies in this response, simply return from this method.
return;
}

// Yes, we've found cookies, inspect them for the key we're looking for.
for (String possibleSessionCookieValues : responseHeaders.get(Constants.SET_COOKIE_KEY)) {

if (possibleSessionCookieValues != null) {

for (String possibleSessionCookie : possibleSessionCookieValues.split(";")) {

if (possibleSessionCookie.startsWith(SESSION_KEY) && possibleSessionCookie.contains("=")) {

// We can safely get the index 1 of the array: we know it contains
// a '=' meaning it has at least 2 values after splitting.
String session = possibleSessionCookie.split("=")[1];

// store `session` somewhere

return;
}
}
}
}
}
}

⑸ 简单说下Retrofit怎么设置请求头信息

有三种方式:
1、直接在参数里写 每次访问的时候都要传入一下

@GET("weatherservice/citylist")
Observable<WeatherRestBean> queryWeather(@Header("apikey") String apikey,@Query("cityname") String cityname);

2、写到注解里这样就少了个参数,但是每定义个接口都要写一次也是比较麻烦
·
@Headers("apikey:")
@GET("weatherservice/cityid")
Observable<WeatherEntity> query(@Query("cityid")String cityid);

3、在创建Retrofit的时候添加,最方便的方式
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder1 = request.newBuilder();
Request build = builder1.addHeader("apikey", "ac7c302dc489a69082cbee6********").build();
return chain.proceed(build);
}
}).retryOnConnectionFailure(true)
.build();
mRetrofit = new Retrofit.Builder()
.client(client)
.baseUrl(ConstantApi.url)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())

热点内容
d盘不能访问权限 发布:2024-04-29 19:41:56 浏览:415
考试版脚本 发布:2024-04-29 19:33:43 浏览:64
html编译成JavaScript 发布:2024-04-29 00:00:15 浏览:367
html编译器手机 发布:2024-04-28 23:59:22 浏览:518
大宇精雕机的密码是多少 发布:2024-04-28 23:50:02 浏览:457
androidapi查询 发布:2024-04-28 23:44:06 浏览:58
怎么升级加密狗 发布:2024-04-28 23:24:57 浏览:665
netgear远程访问 发布:2024-04-28 23:06:18 浏览:533
javaweb整合开发 发布:2024-04-28 23:03:49 浏览:458
福康中国服务器地址 发布:2024-04-28 22:47:20 浏览:747