2016-07-26 2 views
1

Я использую библиотеку OKHttp JavaNetCookieJar, и код находится в следующей ссылке.Несколько заголовков Cookies OKHttp JavaNetCookieJar

https://github.com/square/okhttp/blob/master/okhttp-urlconnection/src/main/java/okhttp3/JavaNetCookieJar.java

JavaNetCookieJar, кажется, есть вопросы, где это только добавляет самый первый куки на запрос жесткий предыдущий ответ получил несколько «Set-Cookie»

После рыть вниз код выглядит ГИТ-хаб например, я должен указать список куки-файлов явно на основе следующего кода »// RI передает все заголовки. У нас их нет, поэтому мы не передаем их!»

@Override public List<Cookie> loadForRequest(HttpUrl url) { 
     // The RI passes all headers. We don't have 'em, so we don't pass 'em! 
     Map<String, List<String>> headers = Collections.emptyMap(); 
     Map<String, List<String>> cookieHeaders; 
     try { 
      cookieHeaders = cookieHandler.get(url.uri(), headers); 
     } catch (IOException e) { 
      Platform.get().log(WARN, "Loading cookies failed for " + url.resolve("/..."), e); 
      return Collections.emptyList(); 
     } 

     List<Cookie> cookies = null; 
     for (Map.Entry<String, List<String>> entry : cookieHeaders.entrySet()) { 
      String key = entry.getKey(); 
      if (("Cookie".equalsIgnoreCase(key) || "Cookie2".equalsIgnoreCase(key)) 
        && !entry.getValue().isEmpty()) { 
       for (String header : entry.getValue()) { 
        if (cookies == null) cookies = new ArrayList<>(); 
        cookies.addAll(decodeHeaderAsJavaNetCookies(url, header)); 
       } 
      } 
     } 

     return cookies != null 
       ? Collections.unmodifiableList(cookies) 
       : Collections.<Cookie>emptyList(); 
    } 

Может кто-то пожалуйста, помогите мне, как ненасытное это без жесткого кодирования списка печенья Я заинтересован как мне нужно все куки.

Любая помощь приветствуется. Благодаря

ответ

0

Я закончил вверх делает это, но любое надежное решение ценится

public class CookieStore implements CookieJar { 

    private final HashMap<String, List<Cookie>> _cookieStore = new HashMap<>(); 

    @Override 
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { 

     List<Cookie> currentCookies = _cookieStore.get(url.host()); 
     List<Cookie> responseCookies = new ArrayList(cookies); 

     if (currentCookies != null && responseCookies != null 
       && responseCookies.size() > 0 && currentCookies.size() > 0) { 
      for (Cookie currentCookie : currentCookies) { 

       if (!responseCookies.contains(currentCookie) && (currentCookie.value()!=null && currentCookie.value()!="")) { 
        responseCookies.add(currentCookie); 
       } 
      } 
     } 

     _cookieStore.put(url.host(), responseCookies); 
    } 

    @Override 
    public List<Cookie> loadForRequest(HttpUrl url) { 

     List<Cookie> cookies = _cookieStore.get(url.host()); 
     List<Cookie> requestCookies = new ArrayList<>(); 

     if (cookies != null && cookies.size() > 0) { 
      for (Cookie currentCookie : cookies) { 
       if ((currentCookie.value()!=null && currentCookie.value()!="")) { 
        requestCookies.add(currentCookie); 
       } 
      } 
     } 

     return requestCookies != null ? requestCookies : new ArrayList<Cookie>(); 
    } 
Смежные вопросы