2012-03-27 20 views
9

Neredeyse sormaya cesaret edeyim, ancak bir URL'nin yanıt verilerini nasıl alabilirim? Artık sadece hatırlamıyorum.ASP.NET'teki url yanıt değerleri nasıl alınır

Benim senaryo: Bir kullanıcının profil resmini almak için twitter API kullanıyorum. Bu api url jpg konumunu döndürür. Yani ben aslında benim görünümlerinde bu HTML yazarsanız:

<img src="https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger"/> 

tarayıcı otomatik src popertie için yanıt jpg kullanır. Şunun gibi:

Şimdi benim sorum çok basit: benim veritabanında koymak için C# o .jpg yerini almak nasıl?

+0

neden cesaret yok dize :) ..its oldukça gud soru içeriyor! Cevabınız için – sajad

cevap

10

Tam olarak ne sorduğundan emin değilim.

Bu URL'yi çağırmak için WebClient.DownloadData C# 'yı kullanabilirsiniz. Dosyayı indirdikten sonra, veritabanına yerleştirebilirsiniz.

byte[] response = new System.Net.WebClient().DownloadData(url); 

Download a file over HTTP into a byte array in C#?

DÜZENLEME: BU ME

WebRequest request = WebRequest.Create("https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger"); 
WebResponse response = request.GetResponse(); 
Console.WriteLine(response.ResponseUri); 

Console.Read(); 

A way to figure out redirection URL gelen DÜZENLEME İÇİN ÇALIŞIYOR: BU ben Read the absolute redirected SRC attribute URL for an image

dan show.json kullanarak ... DÜŞÜN BİR YÖNTEM IS

http://api.twitter.com/1/users/show.json?screen_name=twitterapi

+0

Thx. Ancak bayt verileri gerçekten gerekli değil. API url twitter'i çağırarak, profil resminin yerini geri verir. Tarayıcınızda url 'https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger' yazdıysanız test edebilirsiniz. Twitter API'si tarafından döndürülen jpg konumunu saklamak istiyorum – Gigi2m02

+0

302 yönlendirmesi yapıyorlar ... Güncelleştirmeyi kontrol et – Timmerz

+0

Thx. Hafızamda kaybolan kod bu. – Gigi2m02

6

Ayrıca bu HttpClient kullanarak yapabilirsiniz:

public class UriFetcher 
{ 
    public Uri Get(string apiUri) 
    { 
     using (var httpClient = new HttpClient()) 
     { 
      var httpResponseMessage = httpClient.GetAsync(apiUri).Result; 
      return httpResponseMessage.RequestMessage.RequestUri; 
     } 
    } 
} 

[TestFixture] 
public class UriFetcherTester 
{ 
    [Test] 
    public void Get() 
    { 
     var uriFetcher = new UriFetcher(); 
     var fetchedUri = uriFetcher.Get("https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger"); 
     Console.WriteLine(fetchedUri); 
    } 
} 
+0

Güzel cevap; Basit bir örnek için +1 ve bir test de :-) – dash

+0

Cevabınız için teşekkürler, fakat Timmerz koduyla daha rahat hissediyorum. Çok kullanıştı, çok bağışladı. – Gigi2m02

2

Sen (using System.Net üzerinden) HttpWebRequest ve HttpWebResponse sınıfları kullanabilirsiniz bunu başarmak için;

HttpWebRequest webRequest = 
    WebRequest.Create("https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger") as HttpWebRequest; 

    webRequest.Credentials = CredentialCache.DefaultCredentials; 

    HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse; 

    string url = response.ResponseUri.OriginalString; 

url şimdi "https://si0.twimg.com/profile_images/1438634086/avatar_bigger.png"

İlgili konular