okhttp添加自定义cookie

摘要:
=空?
 
 
okhttp添加自定义cookie第1张okhttp添加自定义cookie第2张
  1 package cn.x.request;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 import java.util.List;
  6 
  7 import okhttp3.Call;
  8 import okhttp3.Cookie;
  9 import okhttp3.CookieJar;
 10 import okhttp3.HttpUrl;
 11 import okhttp3.OkHttpClient;
 12 import okhttp3.Request;
 13 import okhttp3.RequestBody;
 14 import okhttp3.Response;
 15 
 16 public abstract class BaseRequest {
 17     String url;
 18     String requestMethod;
 19     OkHttpClient okHttpClient ;
 20     RequestBody body ;
 21     Request request;
 22     Call call;
 23     Response response;
 24     
 25     public BaseRequest() {
 26         final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
 27         this.okHttpClient = new OkHttpClient.Builder()
 28                 .cookieJar(new CookieJar() {
 29                     @Override
 30                     public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
 31                         cookieStore.put(httpUrl.host(), list);
 32                     }
 33 
 34                     @Override
 35                     public List<Cookie> loadForRequest(HttpUrl httpUrl) {
 36                         List<Cookie> cookies = cookieStore.get(httpUrl.host());
 37                         return cookies != null ? cookies : new ArrayList<Cookie>();
 38                     }
 39                 })
 40                 .build();
 41     }
 42     
 43     
 44     public abstract void prepareRequest() throws Throwable;
 45     public abstract Response excuteRequest() throws Throwable;
 46 
 47 
 48     public String getUrl() {
 49         return url;
 50     }
 51 
 52 
 53     public void setUrl(String url) {
 54         this.url = url;
 55     }
 56 
 57 
 58     public String getRequestMethod() {
 59         return requestMethod;
 60     }
 61 
 62 
 63     public void setRequestMethod(String requestMethod) {
 64         this.requestMethod = requestMethod;
 65     }
 66 
 67 
 68     public OkHttpClient getOkHttpClient() {
 69         return okHttpClient;
 70     }
 71 
 72 
 73     public void setOkHttpClient(OkHttpClient okHttpClient) {
 74         this.okHttpClient = okHttpClient;
 75     }
 76 
 77 
 78     public RequestBody getBody() {
 79         return body;
 80     }
 81 
 82 
 83     public void setBody(RequestBody body) {
 84         this.body = body;
 85     }
 86 
 87 
 88     public Request getRequest() {
 89         return request;
 90     }
 91 
 92 
 93     public void setRequest(Request request) {
 94         this.request = request;
 95     }
 96 
 97 
 98     public Call getCall() {
 99         return call;
100     }
101 
102 
103     public void setCall(Call call) {
104         this.call = call;
105     }
106 
107 
108     public Response getResponse() {
109         return response;
110     }
111 
112 
113     public void setResponse(Response response) {
114         this.response = response;
115     }
116     
117 }
View Code
okhttp添加自定义cookie第3张okhttp添加自定义cookie第4张
 1 package cn.x.request;
 2 
 3 import java.util.List;
 4 
 5 import cn.x.common.AppHeader;
 6 import okhttp3.Cookie;
 7 import okhttp3.HttpUrl;
 8 import okhttp3.MediaType;
 9 import okhttp3.Request;
10 import okhttp3.RequestBody;
11 import okhttp3.Response;
12 
13 public class JsonRequest extends BaseRequest {
14     String jsonString;
15     String accessToken;
16     
17     public JsonRequest(String url ,String jsonString) {
18         super();
19         this.url = url;
20         this.jsonString = jsonString;
21         
22     }
23 
24     @Override
25     public void prepareRequest() throws Throwable {
26         MediaType JSON = MediaType.parse("application/json; charset=utf-8");
27         AppHeader appHeader = new AppHeader(jsonString);
28         body = RequestBody.create(JSON, jsonString);
29         request = new Request.Builder()
30                 .url(url)
31                 .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")
32                 .addHeader("SIGN",appHeader.getSign())
33                 .addHeader("T",appHeader.getTimespan())
34                 .post(body)
35                 .build();
36         if( null != accessToken) {
37             List<Cookie> cookieList = okHttpClient.cookieJar().loadForRequest(HttpUrl.get(url));
38             Cookie cookie = new Cookie.Builder().name("accessToken").value(accessToken).domain(HttpUrl.get(url).host()).build();
39             cookieList.add(cookie);
40             okHttpClient.cookieJar().saveFromResponse(HttpUrl.get(url), cookieList);
41         }
42     }
43 
44     @Override
45     public Response excuteRequest() throws Throwable {
46         System.out.println();
47         if(request.header("Authorization") != null) {
48             System.out.println("Authorization: " + request.header("Authorization"));
49         }
50         System.out.println("url:" + url);
51         System.out.println("request:" + jsonString);
52         call = okHttpClient.newCall(request);
53         response = call.execute();
54         System.out.println("response:" + response.toString());
55         return response;
56     }
57 
58     public String getJsonString() {
59         return jsonString;
60     }
61 
62     public void setJsonString(String jsonString) {
63         this.jsonString = jsonString;
64     }
65 
66     public String getAccessToken() {
67         return accessToken;
68     }
69 
70     public void setAccessToken(String accessToken) {
71         this.accessToken = accessToken;
72     }
73     
74     
75     
76     
77 
78 }
View Code

免责声明:文章转载自《okhttp添加自定义cookie》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【原创】从4个9到5个9可用性调优-总章Spring batch学习 详细配置解读(3)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[Java] 判断一个list是否包含于另一个list,如果没有,输出没包含的

ArrayList<String> actualList = ["1","2","3"] ArrayList<String> expectList = ["1","5","6"] containsList(actualList, expectList ) //Check the expectList in actualList s...

Android占位符

<xliff:g>标签介绍:属性id可以随便命名属性值举例说明%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,...

Asp.net mvc与PHP的Session共享的实现

最近在做的一个ASP.NET MVC的项目,要用到第三方的php系统,为了实现两个系统的互联互通。决定将两者的session打通共享。让asp.net mvc 和php 都能正常访问和修改Session内容。 在决定实现之前,先搜索了一下院子里有没有相类似的文章,对于跨语言的程序互通,有两种方案: (1) SSO单点登录,其实就是把用户名和密码传给另一个系...

C#去掉json字符串中的换行符

【出错状况】 从数据库中返回json格式的数据,但由于数据库中的数据中有换行符,导致返回的json数据错误。 【原因分析】 用for循环语句来分析出错字段字符串中每个字符的ASCII码,可以看出存在值分别为13、10的两个字符,造成换行,导致json格式出错。            char tempstring = '\n';   (10)       ...

实现cookie跨域访问

  需求:A系统(www.a.com)里设置一个浏览器cookie,B系统(www.b.com)需要能够访问到A设置的cookie。   通过HTML SCRIPT标签跨域写cookie:     由于html的script标签的src属性,可以支持访问任何域的资源,通过script发起一个get类型的网络请求,获取资源。     A系统里加入: <...

Tornado 【简述】

前言 python 旗下,群英荟萃,豪杰并起。单是用于 web 开发的,就有 webpy、web2py、bottle、pyramid、zope2、flask、tornado、django 等等,不一而足。最近几年较为流行的,大概也就是flask、tornado 和 django 了。 关于以上各个 web 开发框架的性能比较,上网一搜,铺天盖地——这不是...