Mam aplikację na Androida, która składa się z WebWiew
i muszę zalogować się do witryny automatycznie za pomocą kodu. Próbowałem używać postUrl()
i wydaje się, że działa ... ale tylko w niektórych witrynach.Jak wysłać dane POST z kodem w internetowej wersji Androida
Oto kod używam:
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"));
}
}
Działa wielki dla dropbox.com, ale inne strony takie jak google.com, facebook.com, itd. Po prostu załadować stronę logowania lub dać błąd (google.com daje komunikat, że muszę włączyć obsługę plików cookie).
Teraz po prostu ręcznie wysyłam dane pocztowe; przeglądając formularz logowania do witryny i umieszczając pola nazwy/wartości w postData w moim kodzie. Na stronach takich jak google, formularz logowania ma wiele ukrytych pól i dodałem je również do postData.
Jeśli ktoś może dać mi pojęcie czegoś, co robię źle, proszę dać mi znać, jestem dość zdezorientowany.
Hi an00b. Dziękuję za odpowiedź! Sądzę, że próbowałem tego bez powodzenia. Nie pracuję już nad tym konkretnym problemem, postanowiłem wybrać oddzielną trasę. W każdym razie zagłosuję, ponieważ naprawdę doceniam odpowiedź. – javajavajavajavajava
"BASE64" nie jest zestawem znaków, więc może działać (w zależności od posta), ale może również zawieść. Prawidłowym sposobem jest kodowanie danych postData w postaci "application/x-www-form-urlencoded", które można wykonać za pomocą URLEncoder.encode (postData, "UTF-8"); – raudi
raudi można ułożyć odpowiedź za pomocą fragmentu kodu "application/x-www-form-urlencoded" – D4rWiNS