我试图发帖给我一个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标题?