7

I'm attempting to connect to the page using an HTTP Post. I do an http post for creating a webview. i need to redirect to another page from the webview. But when the continue button is clicked exception is thrown .

My code is

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();
    }

    }

While Clicking the continue button in the webview an exception is thrown

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

2 Answers 2

7

Use like this

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);
Sign up to request clarification or add additional context in comments.

1 Comment

Had to use URLEncoder.encode(password, "UTF-8") while generating the post data string.
1

I'm not sure if this is where your failing, or if this will cause an error, but since you're doing a POST, remove the "?" at the end of your URL_REGISTER variable.

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

"?" is only needed when doing a GET request.

David

1 Comment

I removed the "?" . After calling the Http post , the first URL successfully loaded, redirecting the from the " paypal.com/checkout" page to paypal.com/conformation is throwing Failed in setFormData exception

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.