WebView с ошибкой подключения заголовков - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь открыть веб-сайт сайта (в Android), которому требуется токен / файл cookie в заголовках для аутентификации.

Я пытаюсь открыть страницу, используя код ниже

HashMap<String,String> headers = new HashMap<String,String>();
headers.put("Cookie","MyToken");
MyWebView.loadUrl("https://myURL.com",headers);

Я нажимаю onReceivedError со следующими значениями errorCode : -6 * описание: соединение с сервером было неудачным. *

(PS: поскольку к этому сайту можно получить доступ из интрасети, с помощью эмулятора я не вижу этой ошибки, страница загружается правильно. Также HttpPost работает нормально с тем же токеном)

Ответы [ 2 ]

2 голосов
/ 30 июля 2015

Это просто быстрый пост о добавлении файлов cookie в веб-просмотр. Если вы когда-либо пытались сделать это так, как большинство людей говорили, что это должно быть сделано, вы с треском провалились и нашли этот пост. :)

Способ, которым он должен работать, заключается в том, что вы устанавливаете cookie в CookieManager, а затем указываете CookieSyncManager для синхронизации.

CookieManager.getInstance().setCookie(domain, value);
CookieSyncManager.getInstance().sync();

Я никогда не заставлял это работать так, как описано. С или без асинхронных задач, ожидающих догонения потоков.

Вместо этого я просто добавляю cookie в заголовок всех вызовов loadUrl.

Map<String, String> headers = new HashMap<String, String>();
headers.put("Cookie", "cookieName=cookieValue;domain=domain.com;path=/;Expires=Thu, 2 Aug 2021 20:47:11 UTC;");
webView.loadUrl("myurl.com", headers );

Предупреждение: мне нужно только сначала загрузить соответствующий файл cookie для запроса, если вы хотите покрыть вложенные вызовы изнутри браузера, вам нужно переопределить shouldOverrideUrlLoading.

webView.setWebViewClient(new WebViewClient() {
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url, headers);
         return false;
     }
});

Если вам нужно вставить cookie для всех запросов (включая изображения, js и т. Д.), Вам нужно будет переопределить mustInterceptRequest,

0 голосов
/ 30 марта 2011

Это не действительный заголовок cookie .Попробуйте:

headers.put("Cookie", "foo=bar");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...