2012-03-27 12 views
9

Prawie odważę się zapytać, ale w jaki sposób mogę uzyskać dane odpowiedzi z adresu URL? Po prostu już nie pamiętam.Jak uzyskać wartości odpowiedzi url w Asp.NET

Mój scenariusz: używam funkcji API Twittera, aby uzyskać zdjęcie profilowe użytkownika. Ten adres URL api zwraca lokalizację JPG. więc jeśli rzeczywiście napisać ten kod HTML w moich poglądów:

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

auto przeglądarka używa jpg odpowiedzi dla popertie src. Tak:

Teraz moje pytanie jest bardzo prosta: jak mogę dostać tę lokalizację .jpg w C#, aby umieścić w bazie danych?

+0

dlaczego waż :) ..its dość gud pytanie! – sajad

Odpowiedz

10

Nie jestem do końca pewien, o co pytasz.

Myślę, że można użyć WebClient.DownloadData w języku C# do wywołania tego adresu URL. Po pobraniu pliku można go umieścić w bazie danych.

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

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

EDIT: to działa na mnie

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(); 

od A way to figure out redirection URL

EDIT: Jest to kolejna metoda I think ... używając show.json od Read the absolute redirected SRC attribute URL for an image

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

+0

Thx za odpowiedź. Ale dane bajtów nie są naprawdę potrzebne. Wywołanie adresu URL interfejsu API API przywraca lokalizację profilu. Możesz go przetestować, jeśli opublikujesz URL "https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger" w przeglądarce. Chciałbym zapisać lokalizację jpg zwróconą przez Twitter API – Gigi2m02

+0

robią przekierowania 302 ... sprawdź zaktualizowaną odpowiedź – Timmerz

+0

Thx. To kod, który zagubił się w mojej pamięci. – Gigi2m02

6

Można również zrobić to za pomocą HttpClient:

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

Dobra odpowiedź; +1 dla prostego przykładu i testu też :-) – dash

+0

Thx za odpowiedź również, ale czuję się bardziej komfortowo z kodem Timmerz. Byłem usatysfakcjonowany, więc uporaj. – Gigi2m02

2

Można użyć HttpWebRequest i HttpWebResponse klas (przez using System.Net) do osiągnięcia tego celu;

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 zawiera teraz ciąg "https://si0.twimg.com/profile_images/1438634086/avatar_bigger.png"

Powiązane problemy