2012-03-27 1 views
9

Я почти осмеливаюсь спросить, но как я могу получить данные ответа URL? Я просто больше не могу вспомнить.Как получить значения ответа url в Asp.NET

Мой сценарий: я использую twitter api, чтобы получить изображение профиля пользователя. Этот api url возвращает местоположение jpg. Так что, если я на самом деле написать этот HTML в моих просмотрах:

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

Браузер автоматически использует JPG отклик для Src popertie. Как это:

Теперь мой вопрос очень прост: как я могу получить это место .jpg в C# положить в моей базе данных?

+0

почему вы смеете :) ..its довольно гуд вопрос! – sajad

ответ

10

Я не совсем уверен, что вы просите.

Я думаю, вы можете использовать WebClient.DownloadData в C# для вызова этого URL. После того как вы загрузите файл, его можно поместить в базу данных.

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

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

EDIT: Это работает для меня

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

EDIT: Это еще один метод, который я ДУМАЮ ... используя show.json из Read the absolute redirected SRC attribute URL for an image

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

+0

Thx для вашего ответа. Но данные байта на самом деле не нужны. Вызывая URL-адрес URL-адреса API, вы возвращаете местоположение профиля. Вы можете протестировать его, если вы разместите в своем браузере URL-адрес https://api.twitter.com/1/users/profile_image?screen_name=twitterapi&size=bigger. Я хотел бы сохранить местоположение jpg, возвращенное API Twitter – Gigi2m02

+0

, они делают перенаправление 302 ... проверьте обновленный ответ – Timmerz

+0

Thx. Это код, который потерялся в моей памяти. – Gigi2m02

6

Вы также можете сделать это с помощью 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

Хороший ответ; +1 для простого примера и теста тоже :-) – dash

+0

Thx для вашего ответа также, но я чувствую себя более комфортно с кодом Timmerz. Было уместно, так что повысь. – Gigi2m02

2

Вы можете использовать HttpWebRequest и HttpWebResponse классы (через using System.Net) для достижения этой цели;

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 теперь содержит строку "https://si0.twimg.com/profile_images/1438634086/avatar_bigger.png"

Смежные вопросы