it-swarm.com.de

Wie senden POST Daten mit Code in einem Android-Webview

Ich habe eine Android-Anwendung, die aus einer WebWiew besteht, und muss mich mit Code automatisch auf einer Website anmelden. Ich habe es mit postUrl() versucht und es scheint zu funktionieren ... aber nur auf einigen Sites.

Hier ist der Code, den ich verwende:

public class webviewActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WebView webview = new WebView(this);
        setContentView(webview);
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webview.setWebViewClient(new WebViewClient());

        String postData = "[email protected]&login_password=myPassword";
        webview.postUrl("https://www.dropbox.com/login", EncodingUtils.getBytes(postData, "utf-8"));
    }
}

Dies funktioniert toll für dropbox.com, aber andere Websites wie google.com, facebook.com usw. laden einfach die Anmeldeseite oder geben einen Fehler an (google.com gibt einen Fehler aus, der besagt, dass ich Cookies aktivieren muss).

Im Moment gehe ich nur die Postdaten von Hand. Ich schaue auf das Anmeldeformular für die Site und füge die Namen/Wert-Felder in postData in meinen Code ein. Auf Sites wie Google hat das Anmeldeformular viele ausgeblendete Felder, und ich habe diese auch zu postData hinzugefügt.

Wenn mir jemand eine Idee von etwas geben kann, was ich falsch mache, lass es mich wissen, ich bin ziemlich verwirrt darüber. 

30

Versuchen Sie, "utf-8" (im 2. Parameter) durch "BASE64" zu ersetzen.

15
an00b
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    WebView webView = new WebView(this);

    setContentView(webView);

    String url = "http://example.com/somepage.php";
    String postData = "postvar=value&postvar2=value2";

    webView.postUrl(url, EncodingUtils.getBytes(postData, "base64"));
}
11
Laxman
WebView myWebView = (WebView) findViewById(R.id.webview);

String url="http://www.example.org/login";

String postData=
                "username="+URLEncoder.encode("abc","UTF8")+
                "&password="+URLEncoder.encode("***", "UTF-8");

myWebView.postUrl(url,postData.getBytes());
0