在Android中对WebView的HTTP POST响应

我正在尝试使用HTTP连接到该页面
帖子.我做一个用于创建的http帖子
一个webview.我需要从webview重定向到另一个页面.但是当单击“继续”按钮时会抛出异常.

我的代码

public class ZHttpPostProjActivity extends Activity {
    /** Called when the activity is first created. */

    private WebView mWebView;
    private ProgressDialog progressBar;
    private static final String TAG = "ZHttpPostProjActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web_view);

    mWebView = (WebView) findViewById(R.id.webview);
    WebSettings webSettings = mWebView.getSettings();

    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);

    progressBar = ProgressDialog.show(ZHttpPostProjActivity.this, "",
        "Loading...");

    postData();
    }


    private final String URL_REGISTER = "https://www.paypal.com/checkout";

    public void postData() {

    BufferedReader bufferedReader = null;

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("username", "username"));
        nameValuePairs.add(new BasicNameValuePair("password", "password"));

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(URL_REGISTER);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,
            HTTP.UTF_8));

        HttpResponse response = httpclient.execute(httppost);

        bufferedReader = new BufferedReader(new InputStreamReader(response
            .getEntity().getContent()));
        StringBuffer stringBuffer = new StringBuffer("");
        String line = "";
        String Lineseparator = System.getProperty("line.separator");
        while ((line = bufferedReader.readLine()) != null) {
        stringBuffer.append(line + Lineseparator);
        }
        bufferedReader.close();

        String webData = stringBuffer.toString();
        Log.i(TAG + "web data : ", webData);

        // String webData = new
        // BasicResponseHandler().handleResponse(response);

        Log.i(TAG, "Httppost.getURI().toString(): "
            + httppost.getURI().toString());

        mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.i(TAG, "Processing webview url click...");
            view.loadUrl(url);
            return true;
        }

        public void onPageFinished(WebView view, String url) {

            Log.i(TAG, "Finished loading URL: " + url);
            if (progressBar.isShowing()) {
            progressBar.dismiss();
            }
        }

        public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
            Log.e(TAG, "Error: " + description + " \n errorCode: "
                + errorCode + "\n  failingUrl: " + failingUrl);

        }
        });

        // mWebView.loadUrl(httppost.getURI().toString());
        mWebView.loadData(webData, "text/html", "UTF-8");
        mWebView.loadDataWithBaseURL(httppost.getURI().toString(), webData,
            "text/html", HTTP.UTF_8, null);

    } catch (Exception ex) {
        ex.printstacktrace();
    }

    }

在Webview中单击“继续”按钮时会抛出异常

02-21 11:42:38.539: E/webviewdatabase(2848): Failed in setFormData
02-21 11:42:38.539: E/webviewdatabase(2848): java.net.MalformedURLException: UnkNown protocol: about
02-21 11:42:38.539: E/webviewdatabase(2848):    at java.net.URL.<init>(URL.java:288)
02-21 11:42:38.539: E/webviewdatabase(2848):    at java.net.URL.<init>(URL.java:157)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.WebViewDatabase.setFormData(WebViewDatabase.java:1032)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.browserFrame.loadStarted(browserFrame.java:384)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:91)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.os.Looper.loop(Looper.java:123)
02-21 11:42:38.539: E/webviewdatabase(2848):    at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:673)
02-21 11:42:38.539: E/webviewdatabase(2848):    at java.lang.Thread.run(Thread.java:1019)
02-21 11:42:41.324: E/cache(2848): illegal expires: Sat, Jan 01 2000 01:01:01 GMT

解决方法:

像这样使用

WebView webview = new WebView(this);
setContentView(webview);
byte[] post = EncodingUtils.getBytes("postvariable=value&nextvar=value2", "BASE64");
webview.postUrl("http://www.geenie.nl/AnHeli/mobile/ranking/demo/index.PHP", post);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...