folder Tahribat.com Forumları
linefolder Android - IOS Programlama
linefolder Httpclient İle Session Alıp Webview'e Ekleme



Httpclient İle Session Alıp Webview'e Ekleme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek

    Yapmak istediğim işlem https://ubs.giresun.edu.tr/login.aspx bu siteye girip HttpClient kütüphanesi ile giriş yaptırdıkdan sonra http://ubs.giresun.edu.tr/dashboard.aspx bu siteyi başka activityde WebView içerisinde göstermek istiyorum.

    Giriş yaptığım zaman aldığım session "[version:0][name:ASP.NET_SessionId][value:0000000000][domain:ubs.giresun.edu.tr][path:/][expiry:null]".
    Bu sessionu Intent ile diğer activity'e String şeklinde gönderiyorum ve bu activityde ki WebView'e bu session'u eklemem gerekiyor.

    Bu kısımda takıldım. Yardımlarınızı bekliyorum.

    h0rtl4kk tarafından 28/Kas/15 23:51 tarihinde düzenlenmiştir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sniperscope
    sniperscope's avatar
    Banlanmış Üye
    Kayıt Tarihi: 14/Mart/2009
    Erkek
    	private WebView	web;
    	private String 	url;
    
    	url = "http://ubs.giresun.edu.tr/dashboard.aspx";
    	web = (WebView) findViewById(R.id.webview1);
    
    	web.getSettings().setJavaScriptEnabled(true);
    	web.getSettings().setPluginState(WebSettings.PluginState.ON);
    	web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    	web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    	web.getSettings().setUseWideViewPort(true);
    	web.getSettings().setLoadWithOverviewMode(true);
    	web.getSettings().setBuiltInZoomControls(true);
    
    	String postData = "kullanici_adi=" + user_name + "&kullanici_sifresi=" + password;
    
    	web.postUrl(url, EncodingUtils.getBytes(postData, "utf-8"));
    
    	web.setWebViewClient(new WebViewClient()
    	{
    		@Override
    		public boolean shouldOverrideUrlLoading(WebView view, String url)
    		{
    			return false;
    		}
    
    		@Override
    		public void onPageStarted(WebView view, String url, Bitmap favicon)
    		{
    		}
     
    		@Override
    		public void onPageFinished(WebView web, String url)
    		{
    		}
    	});

     


    "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek
    sniperscope bunu yazdı
    	private WebView	web;
    	private String 	url;
    
    	url = "http://ubs.giresun.edu.tr/dashboard.aspx";
    	web = (WebView) findViewById(R.id.webview1);
    
    	web.getSettings().setJavaScriptEnabled(true);
    	web.getSettings().setPluginState(WebSettings.PluginState.ON);
    	web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    	web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    	web.getSettings().setUseWideViewPort(true);
    	web.getSettings().setLoadWithOverviewMode(true);
    	web.getSettings().setBuiltInZoomControls(true);
    
    	String postData = "kullanici_adi=" + user_name + "&kullanici_sifresi=" + password;
    
    	web.postUrl(url, EncodingUtils.getBytes(postData, "utf-8"));
    
    	web.setWebViewClient(new WebViewClient()
    	{
    		@Override
    		public boolean shouldOverrideUrlLoading(WebView view, String url)
    		{
    			return false;
    		}
    
    		@Override
    		public void onPageStarted(WebView view, String url, Bitmap favicon)
    		{
    		}
     
    		@Override
    		public void onPageFinished(WebView web, String url)
    		{
    		}
    	});

     

    Henüz denemedim ama bu işlem WebView için gördüğüm kadarıyla. Benim yapmam gereken EditTextlere girilen kullanıcı adı ve şifre ile giriş WebView olmadan giriş yapıp, giriş işlemi doğru ise WebView'de giriş yapıldıkdan sonraki sayfayı göstermek.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sniperscope
    sniperscope's avatar
    Banlanmış Üye
    Kayıt Tarihi: 14/Mart/2009
    Erkek

    Haci zaten bir onceki aktiviteden kullanici adi ve sifresini aliyorsun.

    Intent ile aldigin veriyi

    String postData = "kullanici_adi=" + user_name + "&kullanici_sifresi=" + password;
     
    user_name ve password alanlarina yaz. Kullanicinin giris yaptiktan sonraki sayfanin adresinide

    web.postUrl(url, EncodingUtils.getBytes(postData, "utf-8")); url yazan kisma koy ve calistir. Gerisini WebView halleder.

    "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek
    sniperscope bunu yazdı

    Haci zaten bir onceki aktiviteden kullanici adi ve sifresini aliyorsun.

    Intent ile aldigin veriyi

    String postData = "kullanici_adi=" + user_name + "&kullanici_sifresi=" + password;
     
    user_name ve password alanlarina yaz. Kullanicinin giris yaptiktan sonraki sayfanin adresinide

    web.postUrl(url, EncodingUtils.getBytes(postData, "utf-8")); url yazan kisma koy ve calistir. Gerisini WebView halleder.

    Denedim hocam fakat olmadı. postData = ""...... kısmını kullanici_adi olarakda denedim sitedeki "txtLogin:" olarakda denedim yinede giriş yapmadı.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    selamlar,

    öncelikle kodu incelemek lazım, adamlar formu göndermişler, kısaca kullanci_adi ve sifre yi parametre olarak eklemek yetmez hocam :) öyle olsaydı

    siteadi.com?kullanici_adi=XXX&sifre=YYY gibi bi şey çalışması lazımdı ama çalışmıyor :) (şfire hatalı gibi bir uyarı vermesi lazım)

    ama şu şekil denersen (yani formun tüm bilgilerini yollarsan

     

    örnek 

    https://ubs.giresun.edu.tr/login.aspx?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTY4OTg5OTU5MQ9kFgICAw9kFhACDw8PFgIeBFRleHQFFkludmFsaWQgY2FwdGNoYSBlbnRyeS5kZAITDw9kFgIeDGF1dG9jb21wbGV0ZQUCb25kAhcPD2QWAh8BBQJvbmQCHQ8PFgQfAAUQTG9zdCBteSBwYXNzd29yZB4LTmF2aWdhdGVVcmwFLy9VbmlGcmFtZS9sb3N0cGFzc3dvcmQvZGVmYXVsdDIuYXNweD9sYW5nPWVuLVVTZGQCIQ8PFgQfAAUqQ2xpY2sgdG8gZ2VuZXJhdGUgeW91ciBmaXJzdCB0aW1lIHBhc3N3b3JkHwIFLi9VbmlGcmFtZS9sb3N0cGFzc3dvcmQvZGVmYXVsdC5hc3B4P2xhbmc9ZW4tVVNkZAIjDxYCHwAFZjxhIGhyZWY9Ii9VbmlGcmFtZS92aWRlby9sb2dpbi5odG1sIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5IZWxwIFZpZGVvPC9hPmQCJQ8WAh4HVmlzaWJsZWhkAicPZBYCAgEPDxYCHwAFBjIuMC4xOGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBQ1JbWFnZUJ1dHRvblRSBQ1JbWFnZUJ1dHRvbkVOVoW7ms8H6tka5o6eRPkGMG4YHhY%3D&__VIEWSTATEGENERATOR=C2EE9ABB&__EVENTVALIDATION=%2FwEWBgKn5P2qDgLvqPO%2BAgLjqJ%2BWBQKG87HkBgK1qbSRCwKC3IeGDEryto%2F0Pu1c7u%2FTY7NljNMU7i84&txtLogin=adasfdsf&txtPassword=asdasdas&btnLogin=Login

     

    kıullanıcı adı ve şifre hatalıdır diye uyarı verir, çünkü gerçek manada veriyi yollamıştır.

    şimdi gördüğün gibi bazı veriler var _eventargumnent, _viewstate gibi.. bu verileri websitesi yüklendiğinde alabilmen gerekiyor. aksi halde yapcağın işlemi yine sunucu reddecektir. Bir de fazla giriş yaparsan captcha ile uğrşamak zorundasın, o zaman hepten işler karışır. ama buş şekilde session verilerini tutup giriş yapma şansın var.. 

    arkadaşın paylaştığı kod muhtemelen çalışacaktır ancak bir kaç eksik var

    1- parametreleri yukarıdaki gibi eklemen lazım. atıyorum orada 5 parametre varsa hepsini eklemen lazım tek tek

    2- güvenlik önlemi olarak header kontrolü de yaptırıyorlar diye düşünüyorum. O yüzden header larına da şu tarz bigliler eklemen lazım aksi halde yine giriş yapamacaksın

     

    kısacası biraz uğraştırıcı iş ama yolun bu şekilde olmalı.. 

     

    unbalanced tarafından 29/Kas/15 15:10 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    soruyu ve cevapları biraz daha dikkatli okudum şöyle bir yol tavsiye edeyim bu işini kolaylaştırır..

    şimdi bir activity oluştur

    burada hem view olacak (hidden şekilde ve bu login sayfası açılacak)

    sonra kullancı adı ve şifre diye iki textbox koy hocam. bir de buton

    ilgili kişi butona tıkladığında kullanıcı adı ve şifre textboxlarındaki bilgi webview deki ilgili kısma yazılacak

     

    buradaki bilgiler işine yarayacak http://stackoverflow.com/questions/24769555/in-android-how-can-i-set-the-value-of-a-edit-box-in-webview-using-javascript

    bir nevi inject yapıyorsun. daha sonra butona tıklattıracaksın (butonu dom olarak bulup click eventini ağıracaksın ya da butona tıklandığındaki js fonksiyonunu çağıracaksın)

    o zaman webview login olmaya çalışacak, load completed tamamlandığında, webview içindeki html yi kontrol ettir.. eğer içerisinde şifre geçersiz v.s. yazıyorsa o zaman kullanıcıya tekrar o textbox ları göster, eğer öyle bir veri yoksa o zaman webviewi göster.. Olay çözülmüş olur. Böylece cookie v.s. hiç bir şeyle uğraşmazsın. Sadece websitesindeki textboxlara yazdırıp butona clicklettirmek biraz uğraştıracak ama ilk söylediğim yola göre çok daha basit.

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 1175 Toplam Mesaj: 7
cookie webview httpclient httppost