Foros del Web » Programando para Internet » ASP Clásico »

Clases y resultados en acortador de links

Estas en el tema de Clases y resultados en acortador de links en el foro de ASP Clásico en Foros del Web. Hola, tengo una clase para acortar links usando bit.ly usando una api por cuestiones del domino, el caso es que la clase funciona bien, solo ...
  #1 (permalink)  
Antiguo 16/05/2011, 18:30
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
Clases y resultados en acortador de links

Hola, tengo una clase para acortar links usando bit.ly usando una api por cuestiones del domino, el caso es que la clase funciona bien, solo que cuando hay error me lo despliega tal cual, medio feo, lo que hago es que con el siguiente script como el valor del campo url que es el del url recortado pero quisiera tambien tomar el valor de status_txt para poder comprobar si se acorto y manejar el error

El resultado que tomo es como este:
Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2.   <response>    
  3.     <status_code>200</status_code>    
  4.     <status_txt>OK</status_txt>    
  5.  <data>        
  6.   <url>http://kapis.us/l4nRWO</url>        
  7.   <hash>l4nRWO</hash>        
  8.   <global_hash>iWmKxG</global_hash>        
  9.   <long_url>http://www.kapistore.com/producto.asp?id=3</long_url>
  10.   <new_hash>0</new_hash>    
  11.  </data>
  12. </response>

Hasta aqui bien, tomo el valor de URL con esta clase:
Código ASP:
Ver original
  1. class KapiLink
  2.     private m_StrProvider,m_StrApiUrl,m_StrUserName,m_StrApiKey
  3.  
  4.     public property let aspSetProvider(strProvider)
  5.         m_StrProvider = Lcase(strProvider)
  6.         select case m_StrProvider
  7.             case "bitly"
  8.                 m_StrApiUrl = "http://api.bitly.com/v3/shorten?login=[:LOGIN:]&apiKey=[:API:]&longUrl=[:URL:]&format=xml"
  9.             case "isgd"
  10.                 m_StrApiUrl = "http://is.gd/api.php?longurl=[:URL:]"
  11.             case else
  12.                 m_StrApiUrl = "http://tinyurl.com/api-create.php?url=[:URL:]"
  13.         end select
  14.     end property
  15.  
  16.     public property let aspSetUser(strUser)
  17.         m_StrUserName = strUser
  18.     end property
  19.  
  20.     public property let aspSetApi(strApi)
  21.         m_StrApiKey = strApi
  22.     end property
  23.  
  24.     sub class_initialize()
  25.         me.aspSetProvider = "tinyurl"
  26.         m_StrUserName = m_StrApiKey = ""
  27.     end sub
  28.  
  29.     sub class_terminate()
  30.     end sub
  31.  
  32.     private function aspGrabUrl(strUrl)
  33.         select case m_StrProvider
  34.             case "bitly"
  35.                 Dim oXmlDom,strGrabUrl,strRespuesta
  36.                 set oXmlDom = Server.CreateObject("Microsoft.XMLDOM")
  37.                 oXmlDom.async = false
  38.                 oXmlDom.setProperty "SelectionLanguage", "XPath"
  39.                 oXmlDom.loadxml(strUrl)
  40.                 strGrabUrl = oXmlDom.selectSingleNode("/response/data/url").Text
  41.                 Set oXmlDom = Nothing
  42.                 aspGrabUrl = strGrabUrl
  43.             case else
  44.                 aspGrabUrl = strUrl
  45.         end select
  46.     end function
  47.  
  48.     public function aspShortUrlExec(strUrl)
  49.         if Len(m_StrApiUrl) > 0 then
  50.             Dim oXml,strRealUrl,strShortUrl
  51.             strRealUrl = Replace(m_StrApiUrl, "[:URL:]", strUrl, 1, -1, 1)
  52.             strRealUrl = Replace(strRealUrl, "[:LOGIN:]", m_StrUserName, 1, -1, 1)
  53.             strRealUrl = Replace(strRealUrl, "[:API:]", m_StrApiKey, 1, -1, 1)
  54.             set oXml = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
  55.             oXml.Open "GET", strRealUrl, false
  56.             oXml.Send null
  57.             strShortUrl = oXml.responseText
  58.             Set oXml = nothing
  59.             aspShortUrlExec = aspGrabUrl(strShortUrl)
  60.         else
  61.             aspShortUrlExec = false
  62.         end if
  63.     end function
  64.  
  65. end class

Que como les digo, funciona bien, a esta clase la llamo con esta funcion:
Código ASP:
Ver original
  1. function asp_short_url(strUrl)
  2.     Set obj = new KapiLink
  3.    
  4.         obj.aspSetProvider = "bitly"
  5.         obj.aspSetUser = "sjam7"
  6.         obj.aspSetApi = "R_dcdfcf22fc16bfb1fbexxxxxxxxxxxxxx"
  7.         bitlyUrl = obj.aspShortUrlExec(Server.URLEncode(strUrl))
  8.    
  9.         Response.Write(bitlyUrl)
  10.     Set obj = nothing
  11. End Function

y el response.write aparece en un campo de formulario con esto:
<input type="text" name="link_corto" value="<%=asp_short_url(link)%>" size="50">

Como podria agregarle a la clase para que pueda, en la funcion verificar si el status es OK
e imprimir en pantalla el resultado o en caso contrario mostrar el error???

Como puedo agregarle un resultado?
Supongo que es agregando algo como:
strGrabUrl = oXmlDom.selectSingleNode("/response/status_txt").Text
Pero no se como obtenerla o sacarla en la funcion, gracias y espero su valiosa ayuda como siempre

Etiquetas: api, bit.ly
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.