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:
Visual Studio'yu başlatın.
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.Projenin en az System.dllbaşvurduğunu doğrulayın.
Kodunuzda daha sonra bu ad alanlarının
System.NET
bildirimlerini nitelemeniz gerekmemesi için ad alanı, ad alanı veSystem.IO
ad alanı (akış nesneleri için) üzerinde using yönergesiniSystem
kullanın. Bu deyimler diğer bildirimlerden önce kullanılmalıdır.using System; using System.Net; using System.IO;
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";
Yeni
WebRequest
bir nesne oluşturun. Bunu yalnızca sınıfın statikCreate
yöntemiyleWebRequest
yapabilirsiniz (yeni birWebRequest
nesne geçerli değil). Bu değere sahip nesneyi başlatmak içinCreate
hedef URL'yi çağrısının bir parçası olarak sağlayın.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
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 nesnenizeWebRequest
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;
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ındaGetDefaultProxy
daha fazla bilgi için bkz. V2.0 Eski Tür/Üye Listesi (Derlemeye Göre) .NET Framework.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();
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();
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();
}
}
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin