android - 改造和授权 cookies

标签 android rest retrofit okhttp

我需要知道如何在改造中添加授权 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/

相关文章:

android - imageView 在 recyclerview viewholder 中为 null

node.js - 如何用NodeJS的supertest测试GET请求的路径参数?

android - Retrofit2 + RxJava 错误处理

api - 如何验证用户从 Web 应用程序到 API 的身份?

android - 改造:如何修复 "only one http method is allowed. found: get and get"?

android - 使用 Retrofit 2 上传文件

java - 按钮点击错误...找不到方法

java - 为什么 MediaPlayer 没有准备好?

android - 带有改造的 java.net.SocketTimeoutException

rest - 设计一个 REST 资源来管理一个列表