用方法发布webview android拦截动作表单

时间:2016-08-06 18:03:09

标签: javascript android html

我想拦截所有的http请求,为我的请求添加标头并构建响应。我使用了所有算法和库(okHttp,HttpUrlConnection),但没有希望:(

 public WebResourceResponse shouldInterceptRequest(WebView view,   WebResourceRequest request) {
  String urlString = request.getUrl().toString();
    if (Build.VERSION.SDK_INT >= 21) {
        try {
            URL url = new URL(urlString);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestProperty(Constants.KEY_HEADER, Constants.VALUE_KEY_HEADER);

            if (request.getMethod().equals("POST")) {
                 urlConnection = getPostData(urlConnection, request);

            }




            InputStream in;
            int statusCode = urlConnection.getResponseCode();
            if (statusCode == 400 || statusCode == 401 || statusCode == 404) {
                in = urlConnection.getErrorStream();
            } else {
                in = urlConnection.getInputStream();
            }

            String typeMime = urlConnection.getHeaderField("Content-Type");
            if (typeMime == null){
                typeMime = "text/html";
            }
            if (urlString.equals("fontawesome-webfont.woff")) {
                typeMime = "application/font-woff";
            }
            if (typeMime.contains("text/html")) {
                typeMime = "text/html";
            } else if (typeMime == null || typeMime.contains("application/font-woff")) {
                typeMime = "application/font-woff";
            }

            return new WebResourceResponse(typeMime, "utf-8", in);
        } catch (IOException ioe) {
            Log.d(Constants.LOG_TAG, "IOException : " + ioe.getMessage());
            return null;
        }

    } else {
        return null;
    }


private HttpURLConnection getPostData(HttpURLConnection urlConnection, WebResourceRequest request) throws IOException {
    urlConnection.setReadTimeout(10000);
    urlConnection.setConnectTimeout(15000);
    urlConnection.setRequestMethod("POST");
    urlConnection.setDoInput(true);
    urlConnection.setDoOutput(true);

    for (String key : request.getRequestHeaders().keySet()) {
        String valueKey = request.getRequestHeaders().get(key);
        Log.d("key is = ", "" + key + " and value = " + valueKey);
        urlConnection.setRequestProperty(key, valueKey);

    }

     urlConnection.setRequestProperty(URLCache.KEY_X_CSRF_Token, URLCache.VALUE_X_CSRF_Token);


    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("signin[username]", "dfgdfg"));
    params.add(new BasicNameValuePair("signin[password]", "dfgdfg"));

    OutputStream os = urlConnection.getOutputStream();
    BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(os, "utf-8"));
    writer.write(getQuery(params));
    writer.flush();
    writer.close();
    os.close();

    urlConnection.connect();

    return urlConnection;
}
  

对于&#34; GET&#34;方法它的工作正常而不是方法&#34; POST&#34;在论坛行动

0 个答案:

没有答案
相关问题