我需要添加与改型2.0的cookie。如果我理解正确,cookie-与标题相同。必须添加此cookie:
private HashMap<String, String> cookies = new HashMap();
cookies.put("sessionid", "sessionId");
cookies.put("token", "token");
这一个使用Jsoup库:
String json = Jsoup.connect(apiURL + "/link")
.cookies(cookies)
.ignoreHttpErrors(true)
.ignoreContentType(true)
.execute()
.body();
下面是我代码,带有翻新请求:
@GET("link")
Call<CbGet> getData(@Header("sessionid") String sessionId, @Header("token") String token);
但它是不工作...我得到403错误代码,所以没有cookie在请求...
你知道吗?
6条答案
按热度按时间j9per5c41#
首先:Cookie与标头不同。Cookie是一个名为Cookie的特殊HTTP标头,后跟键和值对的列表(以""分隔; ")。类似于:
由于you cannot set multiple Cookie headers in the same request,您不能为单独的值使用两个*@Header * 注解(在您的示例中为 * sessionid * 和 * token *)。
您更改了方法,将sessionId和token放在一个字符串中发送。因此,在这种情况下,您应该事先手动生成cookie字符串。在这种情况下,sessionIdAndToken String对象应该等于"sessionid =* here_goes_sessionid ;令牌= 此处为令牌 *"
s5a0g9ez2#
为什么不使用cookieJar选项呢?
1wnzp6jl3#
API Web服务示例添加标题
当您登录到系统保存cookie到您的本地上响应像
在每一个需要授权的服务中,发送您的cookie,从shareperference获取并与您的Web服务一起发送
m3eecexj4#
要将cookie标头添加到okhttp请求标头,请在拦截器中添加以下内容:
第一个月
参考:@ Alexandria Mironov提到的https://github.com/square/okhttp/wiki/Interceptors
完整示例代码如下:希望对你有帮助
5gfr0r5j5#
我试过使用JavaNetCookieJar(cookieManager),但在我的情况下不起作用,所以我使用了拦截器,它也可以使用依赖注入n(Dagger以及Koin)。
Java Code: ReceivedCookiesInterceptor.java
Java Code: AddCookiesInterceptorclass.java
5q4ezhmt6#
下面是一些Kotlin代码,用于调用传递给Retrofit2的OkHttpClient(v3)中的
CookieManager
。在您的版本中。gradle
dependencies
: