Question

Je viens de recevoir mon unique développeur de l'API clé de Imgur et j'ai mal pour commencer la fissuration sur ce bébé.

La première, un test simple de kick off choses.Comment puis-je télécharger une image à l'aide de C#?J'ai trouvé ce à l'aide de Python:

#!/usr/bin/python

import pycurl

c = pycurl.Curl()
values = [
          ("key", "YOUR_API_KEY"),
          ("image", (c.FORM_FILE, "file.png"))]
# OR:     ("image", "http://example.com/example.jpg"))]
# OR:     ("image", "BASE64_ENCODED_STRING"))]

c.setopt(c.URL, "http://imgur.com/api/upload.xml")
c.setopt(c.HTTPPOST, values)

c.perform()
c.close()
Était-ce utile?

La solution

on dirait que le site utilise le protocole HTTP Post pour télécharger des images.Jetez un oeil à la HTTPWebRequest de la classe et de l'utiliser pour la POSTE à l'adresse URL suivante: La publication des données avec HTTPRequest.

Autres conseils

L'API Imgur fournit maintenant un complète c # exemple :

using System;
using System.IO;
using System.Net;
using System.Text;

namespace ImgurExample
{
    class Program
    {
        static void Main(string[] args)
        {
            PostToImgur(@"C:\Users\ashwin\Desktop\image.jpg", IMGUR_ANONYMOUS_API_KEY);
        }

        public static void PostToImgur(string imagFilePath, string apiKey)
        {
            byte[] imageData;

            FileStream fileStream = File.OpenRead(imagFilePath);
            imageData = new byte[fileStream.Length];
            fileStream.Read(imageData, 0, imageData.Length);
            fileStream.Close();

            string uploadRequestString = "image=" + Uri.EscapeDataString(System.Convert.ToBase64String(imageData)) + "&key=" + apiKey;

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://api.imgur.com/2/upload");
            webRequest.Method = "POST";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.ServicePoint.Expect100Continue = false;

            StreamWriter streamWriter = new StreamWriter(webRequest.GetRequestStream());
            streamWriter.Write(uploadRequestString);
            streamWriter.Close();

            WebResponse response = webRequest.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader responseReader = new StreamReader(responseStream);

            string responseString = responseReader.ReadToEnd();
        }
    }
}

Pourquoi ne pas utiliser le NuGet pour cela: appelé Imgur.API et pour le téléchargement vous auriez une méthode comme ceci:

/*
   The refresh token and all the values represented by constans are given when you allow the application in your imgur panel on the response url
*/

public OAuth2Token CreateToken()
{
    var token = new OAuth2Token(TOKEN_ACCESS, REFRESH_TOKEN, TOKEN_TYPE, ID_ACCOUNT, IMGUR_USER_ACCOUNT, int.Parse(EXPIRES_IN));
    return token;
}

//Use it only if your token is expired
public Task<IOAuth2Token> RefreshToken()
{
    var client = new ImgurClient(CLIENT_ID, CLIENT_SECRET);
    var endpoint= new OAuth2Endpoint(client);
    var token = endpoint.GetTokenByRefreshTokenAsync(REFRESH_TOKEN);
    return token;
}


public async Task UploadImage()
{
     try
     {
          var client = new ImgurClient(CLIENT_ID, CLIENT_SECRET, CreateToken());
          var endpoint = new ImageEndpoint(client);
          IImage image;
          //Here you have to link your image location
          using (var fs = new FileStream(@"IMAGE_LOCATION", FileMode.Open))
          {
             image = await endpoint.UploadImageStreamAsync(fs);
          }
                Debug.Write("Image uploaded. Image Url: " + image.Link);
         }
         catch (ImgurException imgurEx)
         {
                Debug.Write("Error uploading the image to Imgur");
                Debug.Write(imgurEx.Message);
         }
     }

vous pouvez également trouver toutes les références ici: Imgur.API NuGet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top