Как отправить POST-данные с кодом в веб-представлении Android - PullRequest
30 голосов
/ 28 сентября 2011

У меня есть приложение для Android, которое состоит из WebWiew, и мне нужно автоматически войти на сайт, используя код.Я пытался использовать postUrl(), и, кажется, он работает ... но только на некоторых сайтах.

Вот код, который я использую:

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 = "login_email=myEmail@gmail.com&login_password=myPassword";
        webview.postUrl("https://www.dropbox.com/login", EncodingUtils.getBytes(postData, "utf-8"));
    }
}

Это работает замечательно для dropbox.com, но другие сайты, такие как google.com, facebook.com и т. д., просто загружают страницу входа или выдают ошибку (google.com выдает ошибку, говорящую о том, что мне нужно включить куки).

Прямо сейчас я просто собираю данные поста вручную;просматривая форму входа для сайта и помещая поля name / value в postData в моем коде.На таких сайтах, как Google, в форме входа есть много скрытых полей, и я также добавляю их в postData.

Если кто-то может дать мне представление о том, что я делаю неправильно, пожалуйста, дайте мне знать, яЯ запутался в этом.

Ответы [ 3 ]

15 голосов
/ 07 декабря 2011

Попробуйте заменить "utf-8" (во втором параметре) на "BASE64".

11 голосов
/ 23 января 2012
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"));
}
0 голосов
/ 26 октября 2017
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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...