okhttp cookie

package cn.x.request;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import okhttp3.Call;
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

@Data
public abstract class BaseRequest {
    String url;
    String requestMethod;
    OkHttpClient okHttpClient ;
    RequestBody body ;
    Request request;
    Call call;
    Response response;

    public BaseRequest() {
        final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
        this.okHttpClient = new OkHttpClient.Builder()
                .cookieJar(new CookieJar() {
                    @Override
                    public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
                        cookieStore.put(httpUrl.host(), list);
                    }

                    @Override
                    public List<Cookie> loadForRequest(HttpUrl httpUrl) {
                        List<Cookie> cookies = cookieStore.get(httpUrl.host());
                        return cookies != null ? cookies : new ArrayList<Cookie>();
                    }
                })
                .build();
    }


    public abstract void prepareRequest() throws Throwable;
    public abstract Response excuteRequest() throws Throwable;
}
package cn.x.request;

import java.util.List;

import cn.x.common.AppHeader;
import okhttp3.Cookie;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class JsonRequest extends BaseRequest {
    String jsonString;
    String accessToken;

    public JsonRequest(String url ,String jsonString) {
        super();
        this.url = url;
        this.jsonString = jsonString;

    }

    @Override
    public void prepareRequest() throws Throwable {
        MediaType JSON = MediaType.parse("application/json; charset=utf-8");
        AppHeader appHeader = new AppHeader(jsonString);
        body = RequestBody.create(JSON, jsonString);
        request = new Request.Builder()
                .url(url)
                .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")
                .addHeader("SIGN",appHeader.getSign())
                .addHeader("T",appHeader.getTimespan())
                .post(body)
                .build();
        if( null != accessToken) {
            List<Cookie> cookieList = okHttpClient.cookieJar().loadForRequest(HttpUrl.get(url));
            Cookie cookie = new Cookie.Builder().name("accessToken").value(accessToken).domain(HttpUrl.get(url).host()).build();
            cookieList.add(cookie);
            okHttpClient.cookieJar().saveFromResponse(HttpUrl.get(url), cookieList);
        }
    }

    @Override
    public Response excuteRequest() throws Throwable {
        System.out.println();
        if(request.header("Authorization") != null) {
            System.out.println("Authorization: " + request.header("Authorization"));
        }
        System.out.println("url:" + url);
        System.out.println("request:" + jsonString);
        call = okHttpClient.newCall(request);
        response = call.execute();
        System.out.println("response:" + response.toString());
        return response;
    }

    public String getJsonString() {
        return jsonString;
    }

    public void setJsonString(String jsonString) {
        this.jsonString = jsonString;
    }

    public String getAccessToken() {
        return accessToken;
    }

    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }





}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值