我需要知道如何在改造中添加授权 cookie header 。我已经看到了使用请求拦截器等的建议。下面是我正在尝试的,但这是正确的吗?首先,我已经需要一个 RequestAdatper 来第一次获取 session ID。这只能由请求适配器的构建器设置。但我首先需要提出一个请求来获取 session ID。我是否需要两个休息适配器,一个来获取 sessionId,另一个在我获得它之后。我真正需要的是适配器上的一种方法来设置cookie,但它似乎不是这样的方法。这越来越尴尬了。如何在改造中设置授权 cookie?我在常见问题解答或教程中没有看到这一点。
RequestInterceptor requestInterceptor = new RequestInterceptor()
{
@Override
public void intercept(RequestFacade request) {
request.addHeader("Set-Cookie", "sessionId="+sessionIdentifier);
}
};
RestAdapter.Builder().setServer(serverURL)..setRequestIntercepter(requestIntercepter).build();
// but I don't have sessionId when this is first issued ???
最佳答案
保留对拦截器的引用,并将其视为单例,就像您将 RestAdapter
本身一样。
public class ApiHeaders implements RequestInterceptor {
private String sessionId;
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public void clearSessionId() {
sessionId = null;
}
@Override public void intercept(RequestFacade request) {
if (sessionId != null) {
request.setHeader(...);
}
}
}
现在,只需在您的身份验证调用后调用 setSessionId
。所有后续请求都将包含 header 。
关于android - 改造和授权 cookies ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244968/