2017-04-02 110 views
-2

我想从http://random.cat/得到随机的图片,所以我想用Directory.GetFiles或类似的东西来索引它们,但这不起作用。那么得到Directory.GetFiles的功能的最好方法是什么,但是对于http://random.cat/i(我认为这是存储图像的地方)?从网页目录下载文件

在此先感谢!

回答

0

没有访问到图像数据库,但它们提供了一次检索一个图像的api。

创建一个基本模型:

public class RandomImage 
{ 
    public string file { get; set; } 
} 

然后你可以使用Web客户端来做到这一点:

public string RandomImage() 
{ 
    string result = null; 

    var apiurl = "http://random.cat"; 

    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri(apiurl); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    HttpResponseMessage ResponseMessage = client.GetAsync(apiurl + "/meow").Result; // The .Result part will make this method not async 
    if (ResponseMessage.IsSuccessStatusCode) 
    { 
     var ResponseData = ResponseMessage.Content.ReadAsStringAsync().Result; 
     var MyRandomImage = JsonConvert.DeserializeObject<RandomImage>(ResponseData); 

     result = MyRandomImage.file; // This is the url for the file 
    } 

    // Return 
    return result; 
} 

呼叫从自己的方法的功能:

var MyImage = RandomImage(); 
+0

非常感谢!那是,我的问题是! – LordOsslor

0

Directory.GetFiles()被设计成在文件系统上使用,而不是在网址上使用。

This link应该足以让你开始。由于您不知道图片的实际网址,因此您需要parse the page to find it,然后再提出下载请求。

请注意,如果您在特定时间内下载过多图片,他们可能会阻止您。

编辑:我刚才注意到他们有一个API,这使得一切都变得更简单。但它被标记为暂时的,所以你要做的就是这样。

0

如前所述,您必须使用HttpClient。我不知道列出所有文件的方法,但这也需要在托管该站点的Web服务器中设置。