Javascript 使用方法post webview android截取操作表单
我想截获所有http请求,以便将头添加到我的请求并生成响应。我使用了所有算法和库(okHttp、HttpUrlConnection),但没有希望:(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
公共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;
}