• 05-02-2020, 20:12:51
    #1
    Üyeliği durduruldu
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    wClient = new WebClient();
    wClient.Encoding = Encoding.UTF8;
    wClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wClient_DownloadStringCompleted);
    }
    
    private void Form1_Load(object sender, EventArgs e)
    {
    
    }
    
    WebClient wClient;
    string sourceUrl = "";
    string source = "";
    string desen = "Müsait";
    
    
    void wClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
    try
    {
    source = e.Result; // Başarıyla çekilen kaynak kodlarımız "source" değişkenine atanıyor.
    bool varmi = Regex.IsMatch(source, desen); // "desen" içerisindeki ifademizi kontrol ettiriyoruz.
    if (varmi) // True değeri döndüğünde lblSonuc kontrolüne "Daha önce alınmamış" uyarısı atanıyor. Eğer "false" ise "Daha önce alınmış".
    lblSonuc.Text = "Daha önce alınmamış.";
    else
    lblSonuc.Text = "Daha önce alınmış.";
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); // Eğer bir hata verirse yazdırıyoruz.
    }
    }
    
    private void Button1_Click(object sender, EventArgs e)
    {
    try
    {
    sourceUrl = "https://domainadresi.com/" + txtDomain.Text;
    wClient.DownloadStringAsync(new Uri(sourceUrl));
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); // Eğer bir hata verirse yazdırıyoruz.
    }
    }
    Merhabalar r10 üyeleri. Bir siteden webclient yardımıyla veri çekip müsait yazısını gördüğünde label içerisine "Daha önce alınmamış" yazısını bastırmak istiyorum ancak sürekli alınmış yazısı çıkıyor. Nerede hata yapmaktayım?
  • 05-02-2020, 20:22:14
    #2
    Mobilden bakıyorum şuan, bool değişkenine neyin atamasını yapmışsınız? Orada bir sıkıntı mevcut gibi bilgisayara geçtiğim zaman daha detaylı bakacağım.
  • 05-02-2020, 20:25:17
    #3
    Üyeliği durduruldu
    Eagless adlı üyeden alıntı: mesajı görüntüle
    Mobilden bakıyorum şuan, bool değişkenine neyin atamasını yapmışsınız? Orada bir sıkıntı mevcut gibi bilgisayara geçtiğim zaman daha detaylı bakacağım.
    Source ve desen adlı stringlerin atamasını yaptım. "desen" içerisindeki ifadeyi kontrol ettirip webclient içinde geçiyorsa true değerine döndürmeyi amaçladım.
  • 05-02-2020, 20:26:09
    #4
    Dovahkiin adlı üyeden alıntı: mesajı görüntüle
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    wClient = new WebClient();
    wClient.Encoding = Encoding.UTF8;
    wClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wClient_DownloadStringCompleted);
    }
    
    private void Form1_Load(object sender, EventArgs e)
    {
    
    }
    
    WebClient wClient;
    string sourceUrl = "";
    string source = "";
    string desen = "Müsait";
    
    
    void wClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
    try
    {
    source = e.Result; // Başarıyla çekilen kaynak kodlarımız "source" değişkenine atanıyor.
    bool varmi = Regex.IsMatch(source, desen); // "desen" içerisindeki ifademizi kontrol ettiriyoruz.
    if (varmi) // True değeri döndüğünde lblSonuc kontrolüne "Daha önce alınmamış" uyarısı atanıyor. Eğer "false" ise "Daha önce alınmış".
    lblSonuc.Text = "Daha önce alınmamış.";
    else
    lblSonuc.Text = "Daha önce alınmış.";
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); // Eğer bir hata verirse yazdırıyoruz.
    }
    }
    
    private void Button1_Click(object sender, EventArgs e)
    {
    try
    {
    sourceUrl = "https://domainadresi.com/" + txtDomain.Text;
    wClient.DownloadStringAsync(new Uri(sourceUrl));
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); // Eğer bir hata verirse yazdırıyoruz.
    }
    }
    Merhabalar r10 üyeleri. Bir siteden webclient yardımıyla veri çekip müsait yazısını gördüğünde label içerisine "Daha önce alınmamış" yazısını bastırmak istiyorum ancak sürekli alınmış yazısı çıkıyor. Nerede hata yapmaktayım?
    Siteden müsait şeklinde tamamı küçük harf olarak dönüyorsa, yazdığınız desenle eşleşmez. Aşağıdaki gibi options ekleyerek büyük, küçük harf duyarlılığını kapatabilirsiniz.
    bool varmi = Regex.IsMatch(source, desen, RegexOptions.IgnoreCase);
    Yada source.Contains("aranan") ile regex kullanmadan texti içerip içermediğini kontrol edebilirsiniz.
  • 05-02-2020, 20:35:39
    #5
    Üyeliği durduruldu
    pr1d3 adlı üyeden alıntı: mesajı görüntüle
    Siteden müsait şeklinde tamamı küçük harf olarak dönüyorsa, yazdığınız desenle eşleşmez. Aşağıdaki gibi options ekleyerek büyük, küçük harf duyarlılığını kapatabilirsiniz.
    bool varmi = Regex.IsMatch(source, desen, RegexOptions.IgnoreCase);
    Yada source.Contains("aranan") ile regex kullanmadan texti içerip içermediğini kontrol edebilirsiniz.
    İki yöntemi de denedim ancak yine aynı problemle karşılaştım.
  • 05-02-2020, 20:56:26
    #6
    Veri çektiğiniz sitenin kaynak kodunda desen değişkenine atadığınız değerin olup olmadığını kontrol edin.
    Kodda sorun yok, gelen verinin incelenmesi gerekiyor.



    Domain'in daha önce alınıp alınmadığını mı sorguluyorsunuz? Amacınızı ya da veri çektiğiniz siteyi bilirsek daha detaylı inceleyebiliriz.
  • 05-02-2020, 21:02:55
    #7
    Üyeliği durduruldu
    erkanakgun adlı üyeden alıntı: mesajı görüntüle
    Veri çektiğiniz sitenin kaynak kodunda desen değişkenine atadığınız değerin olup olmadığını kontrol edin.
    Kodda sorun yok, gelen verinin incelenmesi gerekiyor.




    Domain'in daha önce alınıp alınmadığını mı sorguluyorsunuz? Amacınızı ya da veri çektiğiniz siteyi bilirsek daha detaylı inceleyebiliriz.
    @pr1d3; sayesinde çözdüm sorunu. Herkese teşekkür ederim. Domain sorgulama amacındaydım ve godaddyden veri çekiyordum ancak veriyi json olarak çekiyormuş.
  • 05-02-2020, 21:27:43
    #8
    void wClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
    string alindiMesaji = null;
    try
    {
    // olası hata kontrolleri
    if (e.Cancelled)
    throw new Exception("İndirme işlemi iptal edilmiş.");
    
    if (e.Error != null)
    throw new Exception($"İndirme işleminde hata oluştu : {e.Error.Message}");
    
    string indirilen = e.Result;
    if (string.IsNullOrWhiteSpace(indirilen))
    throw new Exception($"{nameof(e.Result)} içinde hiç veri yok!");
    
    // genelde string indirmelerde sayfanın HTML çıktısı gelir.
    // kabaca sizin desen = Müsait değeriniz Html sayfasına eşit olamaz. zira Html sayfada bir sürü html tagları vardır.
    // bu yüden talep edilen saydaki çıktının UTF-8 olduğuna ve desen'deki gibi Müsait yazan bir Response verdiğinden emin olun.
    // aksi durumda hiç bir şekilde eşitlik olmaz.
    // bu yüzden indirilen değerin olduğu yere breakpoint atayıp bakın
    // veya
    // şu şekilde program çalışınca VisualStudio Output ekranına bakın.
    System.Diagnostics.Trace.WriteLine(indirilen);
    
    // şimdi kaynak hazır
    // response de sağda solda boşluk olabilir bu yüzden boşlukları Trim ile temizledik.
    this.source = indirilen.Trim();
    
    // tam eşitlik sözkonusu ise
    // Regex alternatifi olarak Equals kullanabilirsiniz. Küçük karşılaştırmalarda daha iyi ve hızlıdır. Regex karmaşık desenler için idealdir.
    // StringComparison seçeneklerini değiştirebilirsiniz.
    if (this.source.Equals(this.desen, StringComparison.CurrentCultureIgnoreCase))
    {
    alindiMesaji = "Tebrikler! Daha önce alınmamış :)";
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    lblSonuc.Text = alindiMesaji == null ? "Daha önce alınmış :(" : alindiMesaji;
    }
            }
  • 06-02-2020, 01:11:26
    #9
    Üyeliği durduruldu
           private void Button1_Click(object sender, EventArgs e)
    {
    try
    {
    int satir_toplami = txtDomain.Lines.Count();
    for (int i = 0; i <= satir_toplami - 1; i++)
    {
    sourceUrl = "https://www.godaddy.com/domainfind/v1/search/exact?q=" + txtDomain.Text; // "Ara" butonumuza bastığımızda, txtDomain kontrolümüzün içerisindeki değer parametre olarak hedef sitemize gönderiliyor.
    wClient.DownloadStringAsync(new Uri(sourceUrl)); // Ve asenkron olarak sonucumuz gelene kadar bekliyoruz. Bu sırada ajax gifleri koyabiliriz. Ben koymadım.
    Console.WriteLine(txtDomain.Lines[i]);
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); // Eğer bir hata verirse yazdırıyoruz.
    }
    }
        }
    Program kullanıcısı textboxun içerisine 10-20 tane domain yazacak. Butona bastığında her satır sırayla aynı döngüye girecek. Bu olayı nasıl yapabiliriz peki?