Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用方法post webview android截取操作表单_Javascript_Android_Html - Fatal编程技术网

Javascript 使用方法post webview android截取操作表单

Javascript 使用方法post webview android截取操作表单,javascript,android,html,Javascript,Android,Html,我想截获所有http请求,以便将头添加到我的请求并生成响应。我使用了所有算法和库(okHttp、HttpUrlConnection),但没有希望:( 公共WebResourceResponse shouldInterceptRequest(WebView视图、WebResourceRequest请求){ 字符串urlString=request.getUrl().toString(); 如果(Build.VERSION.SDK_INT>=21){ 试一试{ URL=新URL(URL字符串); H

我想截获所有http请求,以便将头添加到我的请求并生成响应。我使用了所有算法和库(okHttp、HttpUrlConnection),但没有希望:(

公共WebResourceResponse shouldInterceptRequest(WebView视图、WebResourceRequest请求){
字符串urlString=request.getUrl().toString();
如果(Build.VERSION.SDK_INT>=21){
试一试{
URL=新URL(URL字符串);
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestProperty(Constants.KEY\u头、Constants.VALUE\u KEY\u头);
if(request.getMethod().equals(“POST”)){
urlConnection=getPostData(urlConnection,请求);
}
输入流输入;
int statusCode=urlConnection.getResponseCode();
如果(状态代码==400 | |状态代码==401 | |状态代码==404){
in=urlConnection.getErrorStream();
}否则{
in=urlConnection.getInputStream();
}
字符串类型MIME=urlConnection.getHeaderField(“内容类型”);
if(typeMime==null){
typeMime=“text/html”;
}
if(urlString.equals(“fontWebFont.woff”)){
typeMime=“应用程序/font-woff”;
}
if(typeMime.contains(“text/html”)){
typeMime=“text/html”;
}else if(typeMime==null | | typeMime.contains(“应用程序/字体woff”)){
typeMime=“应用程序/font-woff”;
}
返回新的WebResourceResponse(输入MIME,“utf-8”);
}捕获(ioe异常ioe){
d(Constants.Log_标记,“IOException:+ioe.getMessage());
返回null;
}
}否则{
返回null;
}
私有HttpURLConnection getPostData(HttpURLConnection urlConnection,WebResourceRequest请求)引发IOException{
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setRequestMethod(“POST”);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
for(字符串键:request.getRequestHeaders().keySet()){
字符串valueKey=request.getRequestHeaders().get(key);
Log.d(“key is=”、“”+key+”和value=“+valueKey”);
setRequestProperty(key,valueKey);
}
urlConnection.setRequestProperty(URLCache.KEY_X_CSRF_令牌,URLCache.VALUE_X_CSRF_令牌);
List params=new ArrayList();
添加参数(新的BasicNameValuePair(“登录[用户名],“dfgdfg”);
添加参数(新的BasicNameValuePair(“登录[密码],“dfgdfg”);
OutputStream os=urlConnection.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(操作系统,“utf-8”);
write(getQuery(params));
writer.flush();
writer.close();
os.close();
urlConnection.connect();
返回URL连接;
}
对于“得”法而言,其工作精细而不是方法“帖”在论坛上的作用


想拦截所有http请求吗?
在哪里?什么?@greenapps在WebViewClient的shouldinterceptrequest方法中。当请求为GET时,该方法可以正常工作,但不适用于POST:/谁在发布?请花点时间解释在哪里发生的事情。@greenapps你怎么想?@Badre,你解决了这个问题吗?
想拦截所有的内容吗在WebViewClient的shouldinterceptrequest方法中,http请求的位置?什么?greenapps。当请求为GET时,方法可以正常工作,但不适用于POST:/谁在发布?请花时间解释在哪里发生的事情。@greenapps你怎么想?@Badre,你解决了这个问题吗?
 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;
}