Android:现在不推荐使用Apaches HTTP方法处理带有Webview的cookie吗?

时间:2015-05-29 16:37:46

标签: android cookies webview request http-post

我试图发帖给我一个JSON。在请求中,标头包含带有cookie的标头。 稍后,我需要将(?)该cookie附加到WebView(以及正确的URL)。

现在所有的apache请求和CookieSyncManager都已弃用,我有点丢失了。

这是我的代码,它不起作用。

发布请求代码:

    public static String callJsonPost(String urlString) {

    String data = null;

    try {
        URL url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setUseCaches(true);

        // Set cookies in requests
        CookieManager cookieManager = CookieManager.getInstance();
        String cookie = cookieManager.getCookie(conn.getURL().toString());
        if (cookie != null) {
            conn.setRequestProperty("Cookie", cookie);
        }

        conn.connect();

        // Get cookies from responses and save into the cookie manager
        List<String> cookieList = conn.getHeaderFields().get("Set-Cookie");
        if (cookieList != null) {
            for (String cookieTemp : cookieList) {
                cookieManager.setCookie(conn.getURL().toString(), cookieTemp);
            }
        }

        InputStream in = new BufferedInputStream(conn.getInputStream());

        data = convertStreamToString(in);
        in.close();

    } catch (SocketTimeoutException e) {
        e.printStackTrace();
    } 

    return data;
}

带有Cookie附件代码的webview:

public class WebViewFragment extends Fragment {

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pager_webview_fragment, container, false);

        mWvMain = (WebView) view.findViewById(R.id.mWvMain);

        CookieManager cookies = CookieManager.getInstance();
        cookies.setAcceptCookie(true);
        cookies.setCookie(mUrl, "Cookie");

        mWvMain.loadUrl(mUrl);

        mWvMain.setWebViewClient(WebViewManager.sharedInstance());
        WebSettings s = mWvMain.getSettings();
        s.setJavaScriptEnabled(true);
        s.setDomStorageEnabled(true);
        s.setAppCacheEnabled(true);
        s.setAllowFileAccess(true);
        s.setDatabaseEnabled(true);
        s.setLoadsImagesAutomatically(true);
        s.setAllowContentAccess(true);

        return view;
    }
}

我做错了什么?

更新 经过测试,我确实从通话中获取了cookie。剩下的问题是我如何将cookie实现到webviews标题?

0 个答案:

没有答案