问题描述:根据以往的数据post方式上传的数据,后台收不到
造成原因:后台有自己的请求方法,我们这边post请求上传的对象会覆盖他们的,导致他们所需的Cookie为null
解决方法:我们先获得他们Cookie原本有的数据,再把我们要上传的数据加在Cookie里面,重新上传
具体代码如下:
mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边 if (url.startsWith("http:") || url.startsWith("https:")) { view.loadUrl(url); return false; } return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); CookieManager cookieManager = CookieManager.getInstance(); String CookieStr = cookieManager.getCookie(url); Log.e("sunzn", "Cookies = " + CookieStr); cookieManager.setAcceptCookie(true); cookieManager.setCookie(url, CookieStr);//cookies是在HttpClient中获得的cookie CookieSyncManager.getInstance().sync(); //userToken=7c1b1620-43ef-4ba8-88f2-c38f8f3718d4; cityName=%E5%8C%97%E4%BA%AC%E5%B8%82; userToken=341a9f19-8367-4797-8aea-2740837619e4 if (CookieStr != null) { String strs[] = CookieStr.split("; "); if (strs.length > 0) { for (String str : strs) { if (str.startsWith("userToken=")) { userToken = str.substring("userToken=".length()); Log.e("sunzn", "userToken ==== " + userToken); } } } } super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { view.getSettings().setJavaScriptEnabled(true); super.onPageStarted(view, url, favicon); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Tools.dismissWaitDialog(); super.onReceivedError(view, errorCode, description, failingUrl); } @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = super.shouldInterceptRequest(view, url); if (url != null && url.contains(INJECTION_TOKEN)) { String assetPath = url.substring(url.indexOf(INJECTION_TOKEN) + INJECTION_TOKEN.length(), url.length()); try { response = new WebResourceResponse( "application/javascript", "UTF8", mWebView.getContext().getAssets().open(assetPath) ); } catch (IOException e) { e.printStackTrace(); // Failed to load asset file } } return response; } }); } });