URL rövidítés kódból 2 – Bit.ly

Legutóbb bemutattam, milyen egyszerű a TinyURL-t REST-es API-ja segítségével beépíteni saját alkalmazásunkba. Nem a TinyURL az egyetlen ilyen szolgáltatás, léteznek mások is az interneten. A Bit.ly például statisztikát is ad a rövidített URL-ek használatáról, cserébe természetesen regisztrálnunk kell.

A regisztráció után kaphatunk egy API key-t, a felhasználónevünket és ezt a kulcsot kell beépítenünk a kódunkba, ha az API-n keresztül akarjuk elérni a szolgáltatást. A jelszót nem kell bedrótoznunk.

Az URL rövidítéshez egy REST-es hívást kell küldenünk az alábbi címre, a helyőrzők helyére értelemszerűen behelyettesítve a hosszú URL-t, a belépési nevünket és a kapott API kulcsot:

  const string SERVICEFORMAT = 
"http://api.bit.ly/v3/shorten?format=xml&longUrl={0}&login={1}&apiKey={2}&version=3.0";

A szervertől kapott válasz formátuma a következő:

  HTTP/1.1 200 OK
  Server: nginx/0.7.42
  Date: Sun, 13 Jun 2010 04:03:32 GMT
  Content-Type: application/xml; charset=UTF-8
  Connection: keep-alive
  MIME-Version: 1.0
  Content-Length: 344

  <?xml version="1.0" encoding="UTF-8"?>
  <response>
    <status_code>200</status_code>
    <status_txt>OK</status_txt>
    <data>
        <url>http://bit.ly/crT0M6</url>
        <hash>crT0M6</hash>
        <global_hash>bwJlya</global_hash>
        <long_url>http://www.msdnkk.hu</long_url>
        <new_hash>0</new_hash>
    </data>
  </response>

Ami ebből érdekes számunka, az a status_code és az url mezők, az utóbbit csak a status mezők ellenőrzése után szabad figyelembe venni. Csinálhatunk a válaszhoz egy burkoló osztályt:

  class BitlyResult
  {
    public string StatusCode { get; set; }
    public string StatusText { get; set; }
    public string ShortUrl { get; set; }
    public bool IsValid
    {
      get
      {
        return this.StatusCode.Equals( "200", StringComparison.OrdinalIgnoreCase ) && 
this.StatusText.Equals( "OK", StringComparison.OrdinalIgnoreCase ); } } }

Az egész szolgáltatáshívást pedig az alábbi metódusba csomagolhatjuk be:

  static string Shorten( string longUrl, string login, string apiKey )
  {
    string serviceUrl = String.Format( CultureInfo.InvariantCulture, 
SERVICEFORMAT,
HttpUtility.UrlEncode( longUrl ), login, apiKey ); XDocument response = XDocument.Load( serviceUrl ); BitlyResult result = ( from r in response.Descendants( "response" ) select new BitlyResult { StatusCode = r.Element( "status_code" ).Value, StatusText = r.Element( "status_txt" ).Value, ShortUrl = r.Element( "data" ).Element( "url" ).Value }
).Single(); return result.IsValid ? result.ShortUrl : longUrl; }

Nem annyira Einsteines, mint a TinyURL, de cserébe kapunk sok plusz statisztikai információt a rövidített címek használatáról.

 

Technorati-címkék: ,,


Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2010.06.14. 13:04:34 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • Kattintható sorú GridView

    Dávid Zoltán Az ASP.NET GridView-t vagy szereti az ember, vagy nem, én mindenesetre használom. Egész jó listázáshoz, vagy master-detailhez. Utóbbihoz valahogy Select eseményt kell tudni kiváltani a GridView egy során. Normális esetben erre egy Button vagy LinkButton elég. Felmerült, hogy lehet megoldani egy adatsor kiválasztását úgy, hogy ahhoz bárhol lehessen kattintani a soron. Végül ezt találtam a legszebbnek. Tovább »
  • Megcsillan az ezüstfény - élmények 1.1

    Végre eljutottam odáig, hogy a whitepaper-ök, tutorialok, get-started-ek olvasgatása után elkészítettem első Silverlight alkalmazásomat, használtam a mindenféle Expression eszközöket hozzá (erről majd írok is). Kellően bátornak érezvén magamat (és kellően nem akarván JavaScriptet bütykölni), rögtön bele az 1.1 alfába, még akkor is ha a bétája látótávolságon kívül esik. Mi jut az ember eszébe ha meghallja (vagy beírja a Googleba) a Silverlight szót: nincsen Silverlight média nélkül, valahogy mindig képek vagy videók az alkalmazás "adatai". No akkor csináljunk mi is egy ikszpluszegyedik (de első saját  ) videoplayer-t. Kellően fájdalommentesnek... Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások