2012-03-27 8 views
9

Ich wage fast zu fragen, aber wie kann ich die Antwortdaten einer URL bekommen? Ich kann mich einfach nicht mehr erinnern.Wie bekomme ich die URL Antwort Werte in Asp.NET

Mein Szenario: Ich benutze die Twitter API, um das Profilbild eines Benutzers zu erhalten. Diese API gibt den jpg-Speicherort zurück. Also, wenn ich tatsächlich HTML in meinen Ansichten schreiben:

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

Der Browser Auto verwendet die Antwort jpg für den src popertie. Wie folgt aus:

Jetzt ist meine Frage ganz einfach: Wie kann ich die .jpg Lage in C# bekomme in meiner Datenbank zu setzen?

+0

warum Sie es wagen :) ..its ziemlich gud Frage! – sajad

Antwort

10

Ich bin nicht genau sicher, was Sie fragen.

Ich denke, Sie können WebClient.DownloadData in C# verwenden, um diese URL aufzurufen. Sobald Sie die Datei heruntergeladen haben, können Sie sie in der Datenbank speichern.

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

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

EDIT: Das ist für mich

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

von A way to figure out redirection URL

EDIT ARBEITET: DIES IST EINE WEITERE VERFAHREN ICH DENKE ... mit show.json von Read the absolute redirected SRC attribute URL for an image

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

+0

Thx für Ihre Antwort. Aber die Byte-Daten sind nicht wirklich notwendig. Durch den Aufruf der API URL gibt Twitter den Speicherort des Profilbildes zurück. Sie können es testen, wenn Sie die URL 'https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger' in Ihrem Browser posten. Ich möchte den JPG-Standort, der von der Twitter API – Gigi2m02

+0

zurückgegeben wird, sie tun eine 302-Weiterleitung ... überprüfen aktualisierte Antwort – Timmerz

+0

Thx. Das ist der Code, der in meiner Erinnerung verloren gegangen ist. – Gigi2m02

6

Sie können auch tun es Httpclient verwenden:

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

Schöne Antwort; +1 für einfaches Beispiel und einen Test auch :-) – dash

+0

Thx für Ihre Antwort, aber ich fühle mich wohler mit Timmerz Code. War nützlich, also upvote. – Gigi2m02

2

Sie die HttpWebRequest und HttpWebResponse Klassen verwenden können (via using System.Net) dies zu erreichen;

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 enthält jetzt die Zeichenfolge "https://si0.twimg.com/profile_images/1438634086/avatar_bigger.png"

Verwandte Themen