2016-04-04 14 views
0

Kullanıcılarım için jsoup kullanarak http://www.bvrit.edu.in'a otomatik giriş yapmaya ve kullanıcılarım için bir webview kullanarak oturum açmış web sayfasını görüntülemeye çalışıyordum. Jsoup API'sini ekledim, inceleme alanlarını kullanarak kullanıcı adının kimliğini doğrulayın. txtId1 ve parola txtPwd1'dir ve verileri ilgili isimlerle gönderir. Ayrıca tezahür ettirmek için internet erişim iznini de ekledim ancak web sayfamı görüntüleyemiyorum, kodum aşağıda gösterildiği gibi, bazı temel bilgileri yanlış alıyorum ama bunu anlayamadım.Android'de jsoup kullanarak bir web sayfasına giriş nasıl otomatikleştirilir?

public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void main(String[] args) throws IOException { 

    WebView browser = (WebView) findViewById(R.id.bvritWebview); 

    Connection.Response loginForm = Jsoup.connect("http://www.bvrit.edu.in/") 
      .ignoreContentType(true) 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") 
      .referrer("http://www.google.com") 
      .timeout(12000) 
      .followRedirects(true) 
      .method(Connection.Method.GET) 
      .execute(); 

    Connection.Response loginFormFilled = Jsoup.connect("http://www.bvrit.edu.in/") 
      .ignoreContentType(true) 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") 
      .followRedirects(true) 
      .referrer("https://login.to/") 
      .data("txtId1", "username")//check the form to find field name for user name 
      .data("txtPwd1", "password")//check the form to find field name for user password 
      .cookies(loginForm.cookies()) 
      .method(Connection.Method.POST) 
      .execute(); 
    int statusCode = loginFormFilled.statusCode(); 
    Map<String, String> cookies = loginFormFilled.cookies(); 
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.loadUrl("http://www.bvrit.edu.in"); 

} 

} Eğer POST istekte birkaç parametre eksik enter image description here

cevap

1

in logigng sonra ağ

başlık bölüm. Sayfayı tarayıcınıza yükleyin, geliştirici araçlarını başlatmak için F12 tuşuna basın ve POST isteğine bakın. Böyle bir şey görürsünüz - sadece şu anda gönderdiğiniz mesajlara değil, tüm bu parametreleri sunucuya göndermelisiniz. (Ben senin URL üzerinde denemek vermedi, CSS seçici farklı olabilir)
ilk 3 parametreler her oturum için benzersizdir, ve onlara böyle ilk GET isteği, bir şey oluşturmak alabilirsiniz:

Document doc = loginForm.parse(); 
Element e = doc.select("input[id=__VIEWSTATE]").first(); 
String viewState = e.attr("value"); 
+0

yardımlarınız için teşekkür ederim ben web siteye giriş yaptıktan sonra bir resim ekledim soo bana eklemek için wnat .data ("__ VIEWSTATE", "viewtate verileri") ve aynı "viewstategenerator ve" Evenyvalidation "için .. aynı. –

+0

kodun geri kalanının tamamı doğru..Sonraki ben sadece bir acemi olarak benimle .. –

+0

Tüm parametreleri eklemelisiniz.İlk 3 her oturumda değişecektir: __VIEWSTATE, __VIEWSTATEGENERATOR, __EVENTVALIDATION ve Onları ilk "GET" isteğinden cevabımda sana gösterdi. Parametrelerin geri kalanı, sorunuza eklediğiniz resimdeki gibi sabit değerlere sahiptir. Kodun geri kalanı bana uygun görünüyor. – TDG

İlgili konular