Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema: WebService con HttpWebRequest cargando url con ajax

Estas en el tema de Problema: WebService con HttpWebRequest cargando url con ajax en el foro de .NET en Foros del Web. Hola a todos: Les cuento... trabajo en uno de esos proyectitos para matar el tiempo. Aunque se que existen muchas aplicaciones que lo hacen, quiero ...
  #1 (permalink)  
Antiguo 06/05/2014, 11:26
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 19 años, 6 meses
Puntos: 1
Problema: WebService con HttpWebRequest cargando url con ajax

Hola a todos:

Les cuento... trabajo en uno de esos proyectitos para matar el tiempo.
Aunque se que existen muchas aplicaciones que lo hacen, quiero bajar mp3s desde youtube utilizando cualquier plataforma (android, iphone, web, windows, etc...) y para eso se me ocurrió hacer un WebService en VB.net que me devuelva la ruta de descarga en base a algunos portales que ya realizan esta tarea. me explico:

Anteriormente desarrollé esta app en vb.net para windows:

Código:
Public Class Form1

    Function Between(ByVal org As String, ByVal first As String, ByVal last As String) As String
        On Error Resume Next
        Dim startloc As Integer = org.IndexOf(first, 0)
        Dim endloc As Integer = org.IndexOf(last, startloc + first.Length)
        startloc = startloc + first.Length
        endloc = endloc - startloc
        Return org.Substring(startloc, endloc)
    End Function

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Dim source As String = ""
        Dim returnstring As String = ""
        Dim codef As String = ""
        Dim final As String = ""
        source = WebBrowser1.DocumentText
        If InStr(source, "Click here to get your Download Link") Then
            Me.Text = "Converted, waiting for download link..."

            Timer1.Enabled = False
            returnstring = Between(source, "<a href=""download.php?server=", "&hash=")
            codef = Between(source, "hash=", """>Click here")
            final = "http://" & returnstring & ".vidtomp3.com/download/" & codef
            WebBrowser1.Navigate(final)


        ElseIf InStr(source, "Conversion complete") Then
            Me.Text = "Downloading..."


        End If
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate("about:blank")
        WebBrowser1.Navigate("about:blank")
        WebBrowser1.Navigate("about:blank")
        Me.Text = "Procesing request"
        WebBrowser1.Navigate("http://www.vidtomp3.com/process.php?url=http://www.youtube.com/watch?v=" & TextBox1.Text)
        Timer1.Enabled = True
    End Sub
Lo unico que hago es cargar esta web y recorrer su cod html tantas veces como sea necesario hasta que aparezca el link de descarga que necesito. Dado que la web vidtomp3.com requiere un poco de tiempo para entregar el link, debo recorrerla varias veces hasta que aparezca (la web tiene ajax implementado).

Intente hacer lo mismo en un WebService vb.net, pero el resultado siempre ha sido fallido.

Cargué la web con httpwebrequest y despues extraigo su html tantas veces sea necesario (con un ciclo while) hasta que aparezca el link de descarga, pero esto no sucede nunca dado que el request solo me lee hasta el punto que dice algo como "cheking link" y no hasta que me muestra el link con ajax.

En sintesis, como el link es mostrado con ajax en la pagina, el request asume que la lectura de la web termino y me entrega el html de un punto anterior.
¿Como puedo hacer para que el codigo html obtenido a través de httpwebrequest y httpwebresponse sea el de la carga final de la web, cuando ajax ya mostró el link?

Adjunto lo que hice, sin resultados.

Código:
<WebMethod()> _
    Public Function Mp3FromYoutube(ByVal code As String) As String

        Dim urlDownload As String
        Dim sourcecode As String = ""
        Dim sr As System.IO.StreamReader
        Dim aux As Integer

        urlDownload = "http://www.vidtomp3.com/process.php?url=http://www.youtube.com/watch?v=" & code

        Try
            Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(urlDownload)
            Dim response As System.Net.HttpWebResponse = request.GetResponse()
            sr = New System.IO.StreamReader(response.GetResponseStream())

            aux = 0

            While aux = 0
                aux = InStr(sourcecode, "Click here to get your Download Link")
                sourcecode = sr.ReadToEnd()

            End While

            Return sourcecode

        Catch ex As Exception
            Return "error"
        End Try


    End Function
esto siempre me entrega el html previo a la finalización de ajax, cuando me entrega el link

Quedo pendiente a vuestra ayuda y guia maestros!!!

Saludos

Etiquetas: ajax, visualbasic, webservice, youtube
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 00:51.