GET isteğinde bulunmak için Visual C# kullanma

Bu makalede, Visual C# kullanarak İnternet'ten Web sayfası alma isteğinde GET bulunma işlemleri açıklanmaktadır.

Özgün ürün sürümü: Visual Studio
Özgün KB numarası: 307023

Özet

Microsoft .NET Framework, web isteğinde bulunma da dahil olmak üzere ağ iletişimi için birçok yararlı sınıf içerir.

Bu makale, aşağıdaki .NET Framework Sınıf Kitaplığı ad alanlarını ifade eder:

  • System.Net
  • System.IO

Gereksinimler

Aşağıdaki listede ihtiyacınız olan önerilen donanım ve yazılımlar özetlenmiştir:

  • Windows
  • Visual Studio

Not

Bir ara sunucunun arkasındaysanız, bu makaledeki kodu test etmek için bir iç Web adresine veya statik proxy değerlerine ( Web sayfası isteme bölümünün 5. ve 6. adımlarına bakın) sahip olmanız gerekir.

Web sayfası isteme

Bir Web sayfasını program aracılığıyla alma özelliğinin birçok kullanım alanı vardır. Bu özellik, Visual Basic programcılarına İnternet Aktarım Denetimi aracılığıyla veya Windows İnternet (WinINet) API'lerine karşı doğrudan kodlama yoluyla sağlanmıştır.

.NET'te System.Net ad alanları, bir İnternet kaynağı isteğini kapsüllemek için sınıfını ve WebResponse döndürülen verileri temsil eden sınıfı sağlarWebRequest.

Bu nesneleri kullanarak, belirli bir isteğin yanıtını temsil eden bir akış elde edebilirsiniz. Bir akışınız olduğunda, yanıtı yerel bir metin dosyasından veya başka bir kaynaktan okuduğunuz gibi okuyabilirsiniz.

İstekte bulunmak GET için şu adımları izleyin:

  1. Visual Studio'yu başlatın.

  2. Visual C# uygulamasında yeni bir konsol uygulaması oluşturun. Visual Studio otomatik olarak bir genel sınıf ve boş Main bir yöntem oluşturur.

  3. Projenin en az System.dllbaşvurduğunu doğrulayın.

  4. Kodunuzda daha sonra bu ad alanlarının System.NET bildirimlerini nitelemeniz gerekmemesi için ad alanı, ad alanı ve System.IO ad alanı (akış nesneleri için) üzerinde using yönergesini System kullanın. Bu deyimler diğer bildirimlerden önce kullanılmalıdır.

    using System;
    using System.Net;
    using System.IO;
    
  5. Bu örnekte URL'yi değişken olarak sabit kodlayın. Gerçek bir sistemde, bu değeri büyük olasılıkla bir işleve parametre olarak veya konsol uygulamasına komut satırı bağımsız değişkeni olarak alırsınız.

    string sURL;
    sURL = "http://www.contoso.com";
    
  6. Yeni WebRequest bir nesne oluşturun. Bunu yalnızca sınıfın statik Create yöntemiyle WebRequest yapabilirsiniz (yeni bir WebRequest nesne geçerli değil). Bu değere sahip nesneyi başlatmak için Create hedef URL'yi çağrısının bir parçası olarak sağlayın.

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sURL);
    
  7. Yerel ağ dışında URL'ler istemek istiyorsanız ve bir ara sunucu arkasındaysanız, bir WebProxy nesne oluşturmanız ve sonra bu nesneyi nesnenize WebRequest sağlamanız gerekir. WebProxy nesnesi, Internet Explorer'daki proxy ayarları aracılığıyla ayarlayabileceğiniz temel bilgileri belirtmenize olanak tanıyan, aşağıdaki örnek kodda ayarlanmayan çeşitli özelliklere sahiptir.

    WebProxy myProxy = new WebProxy("myproxy",80);
    myProxy.BypassProxyOnLocal = true;
    
    wrGETURL.Proxy = myProxy;
    
  8. Internet Explorer'da zaten yapılandırılmış olan ayarları kullanmak istiyorsanız, sınıfının statik yöntemini WebProxy kullanabilirsinizGetDefaultProxy.

    wrGETURL.Proxy = WebProxy.GetDefaultProxy();
    

    Not

    Visual Studio 2005 veya Visual Studio 2008'de GetDefaultProxy yöntemi çalışır. Ancak, bu yöntem kullanım dışı bırakıldı. .NET Framework 2.0'daki yöntemi hakkında GetDefaultProxy daha fazla bilgi için bkz. V2.0 Eski Tür/Üye Listesi (Derlemeye Göre) .NET Framework.

  9. hedef URL'yi ayarlayarak ve geçerli ara sunucu bilgilerini vererek isteğinizin kurulumunu tamamladığınızda, isteğinizin yanıtına karşılık gelen bir Stream nesne almak için isteğinizi kullanabilirsiniz.

    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
    
  10. Yanıt akışına sahip olduğunuzda, akışı başka herhangi bir akışı kullandığınız gibi kullanabilir ve akış içeriğini satır satır, hatta tümünü aynı anda okuyabilirsiniz. Aşağıdaki örnek kod döngüsü, yöntem null döndürene kadar ReadLine her satırı konsola çıkararak akışı birer birer okur.

    StreamReader objReader = new StreamReader(objStream);
    
    string sLine = "";
    int i = 0;
    
    while (sLine != null)
    {
        i++;
        sLine = objReader.ReadLine();
        if (sLine != null)
            Console.WriteLine("{0}:{1}", i, sLine);
    }
    Console.ReadLine();
    
  11. Programınızı kaydedin ve çalıştırın. Ortamınız için proxy bilgilerini doğru yapılandırdığınızdan emin olun (bkz. 7. ve 8. adımlara). HTML içerik satırlarının numaralandırılmış ve konsola çıkışını görmeniz gerekir.

Tam kod listesi

using System;
using System.Net;
using System.IO;

namespace MakeAGETRequest_charp
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            string sURL;
            sURL = "http://www.contoso.com";

            WebRequest wrGETURL;
            wrGETURL = WebRequest.Create(sURL);

            WebProxy myProxy = new WebProxy("myproxy", 80);
            myProxy.BypassProxyOnLocal = true;

            wrGETURL.Proxy = WebProxy.GetDefaultProxy();

            Stream objStream;
            objStream = wrGETURL.GetResponse().GetResponseStream();

            StreamReader objReader = new StreamReader(objStream);

            string sLine = "";
            int i = 0;

            while (sLine != null)
            {
                i++;
                sLine = objReader.ReadLine();
                if (sLine != null)
                    Console.WriteLine("{0}:{1}", i, sLine);
            }
            Console.ReadLine();
        }
    }
}