Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luison

#1
.NET (C#, VB.NET, ASP) / Problema con SMS
12 Noviembre 2013, 23:49 PM
Estoy desarrollando una aplicacion para enviar sms, utilizo para ello la api de silverstreet.
Para enviar el sms no hay problema, simplemente en la siguiente liga se ponen los parametros:
http://api.silverstreet.com/send.php?username=test&password=test&destination=3113469 0886&sender=silver&body=Testing&dlr=1&reference=100   
 
La api retorna 01, lo cual significa que el sms ha sido recibido correctamente el sistema silverstreet, pero no significa
que lo haya recibido el destinatario, y es lo que me interesa, saber quién lo recibe y quién no.
Para eso el manual indica que al enviar un sms el sistema te retorna un Delivery Report, con los datos que me interesan.
El sistema te retorna el reporte si le pasas el parametro dlr=1 y una referencia unica, eso lo especifico en la cadena.
De acuerdo al manual, debes tener configurada una pagina de respuesta, llamada callback url, y ésta debe retornar en texto plano "OK", mi pagina ya lo hace y se llama www.misitio.mx/sms/callback.aspx
Segun mi entendimiento, cuando haces una paticion similar, la api debe redireccionarte a la pagina callback, como lo hace twitter y facebook.
Pero no me redirecciona y por tanto no recibo el reporte del sms enviado, solo recibo 01 de que el sistema silverstreet recibio el sms.
Estoy trabajando en ASP.Net y este es mi codigo

Código (vbnet) [Seleccionar]

Dim strUrl As String = "https://api.silverstreet.com/send.php?username=user&password=pas&destination=" & txtDest.Text & "&sender=35110&body=" & txtMsj.Text & "&dlr=1&reference=100"

           Dim request As WebRequest = HttpWebRequest.Create(strUrl)
           Dim response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
           Dim s As Stream = DirectCast(response.GetResponseStream(), Stream)
           Dim readStream As New StreamReader(s)
           Dim dataString As String = readStream.ReadToEnd()
           'aqui recibo 01 (sms recibido)
           txtRes.Text = dataString.ToString
           response.Close()
           s.Close()
           readStream.Close()
           lblmsj.Text = "Mensaje Enviado"



Tal vez estoy haciendo algo mal, porque deberia de redireccionarme a www.misitio.mx/sms/callback.aspx con los datos del reporte, y despues de eso yo deberia contestar con un OK en texto plano.

Esto es lo que retorna el reporte:
http://www.yoururl.com/callback?REFERENCE=12345678&STATUS=Delivered&REASON=&D ESTINATION=31134690886&TIMESTAMP=20120501120202&OPERATOR=20408

Seguramente alguien ha realizado algo similar
Les agradezco de antemano su ayuda
Gracias y seguimos por aqui buscando la solucion
#2
Desarrollo Web / Sugerencia sobre envio de SMS
12 Noviembre 2013, 19:00 PM
Estoy desarrollando una aplicacion para enviar sms, utilizo para ello la api de silverstreet.
Para enviar el sms no hay problema, simplemente en la siguiente liga se ponen los parametros:
http://api.silverstreet.com/send.php?username=test&password=test&destination=3113469 0886&sender=silver&body=Testing&dlr=1&reference=100   
 
La api retorna 01, lo cual significa que el sms ha sido recibido correctamente el sistema silverstreet, pero no significa
que lo haya recibido el destinatario, y es lo que me interesa, saber quién lo recibe y quién no.
Para eso el manual indica que al enviar un sms el sistema te retorna un Delivery Report, con los datos que me interesan.
El sistema te retorna el reporte si le pasas el parametro dlr=1 y una referencia unica, eso lo especifico en la cadena.
De acuerdo al manual, debes tener configurada una pagina de respuesta, llamada callback url, y ésta debe retornar en texto plano "OK", mi pagina ya lo hace y se llama www.misitio.mx/sms/callback.aspx
Segun mi entendimiento, cuando haces una paticion similar, la api debe redireccionarte a la pagina callback, como lo hace twitter y facebook.
Pero no me redirecciona y por tanto no recibo el reporte del sms enviado, solo recibo 01 de que el sistema silverstreet recibio el sms.
Estoy trabajando en ASP.Net y este es mi codigo


Código (vbnet) [Seleccionar]

Dim strUrl As String = "https://api.silverstreet.com/send.php?username=user&password=pas&destination=" & txtDest.Text & "&sender=35110&body=" & txtMsj.Text & "&dlr=1&reference=100"

            Dim request As WebRequest = HttpWebRequest.Create(strUrl)
            Dim response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
            Dim s As Stream = DirectCast(response.GetResponseStream(), Stream)
            Dim readStream As New StreamReader(s)
            Dim dataString As String = readStream.ReadToEnd()
            'aqui recibo 01 (sms recibido)
            txtRes.Text = dataString.ToString
            response.Close()
            s.Close()
            readStream.Close()
            lblmsj.Text = "Mensaje Enviado"


Tal vez estoy haciendo algo mal, porque deberia de redireccionarme a www.misitio.mx/sms/callback.aspx con los datos del reporte, y despues de eso yo deberia contestar con un OK en texto plano.

Esto es lo que retorna el reporte:

http://www.yoururl.com/callback?REFERENCE=12345678&STATUS=Delivered&REASON=&D ESTINATION=31134690886&TIMESTAMP=20120501120202&OPERATOR=20408

Seguramente alguien ha realizado algo similar
Les agradezco de antemano su ayuda
Gracias y seguimos por aqui buscando la solucion


#3
Investigando veo que mysql tiene configurado el wait_timeout por default en 8 horas de espera, por tanto cada conexion  que abro permanece abierta toda la jornada de trabajo, lo que a la postre ocasiones una pila enorme de conexiones abiertas.
Quisiera pensar que eso es la causa de que mi aplicacion se traba. Cambie el wait_timeout a 30 segundos para que cada que pase ese tiempo mysql cierre todas las conexiones en estado sleep.

Que opinan ustedes?,,, Será la solucion?

Esperemos que sí  ;D
#4
Probablemente esto ayude. Realizando una venta se registra en diferentes tablas la transaccion:
1-En tabla de ventas
2-En detalle de ventas
3-En movimientos
4-Se actualizan inventarios

Todo ello genera en mysql dentro de procesos del servidor una imagen como la que comparto:

Es normal que se abran todos esos procesos  y se mantengan ahi?
O sera que el problema es porque se abren demadiados y jamas se cierran sino es que hasta varias horas despues cuando el sistema cierra las ventas del dia?

Gracias..
#5
Tengo instalado xampp 1.7.3, configurado normal, con limite maximo de conexiones el que trae por default 151. Lo que estoy haciendo es en un modulo declarar:

Public Con as new clsDatabase

y utilizo esa instancia en toda la aplicacion. Lo que podria ser es que la funcion QueryDataReader abre una conexion a mysql en distintos formularios y ésta no se cierre hasta que la aplicacion se cierra al final del dia.
Solo es una pc donde esta corriendo mi sistema.
Ya agregue  los
Código (vbnet) [Seleccionar]
Catch ex As MySql.Data.MySqlClient.MySqlException pero no me devuelve error  >:(

Sigo buscando soluciones, gracias...
#6
Podría ser que se generen muchas conexiones y ese sea el problema, lo que no entiendo por qué no se genera el error en mi aplicacion.

Un ejemplo del uso de la instancia de la clase es:
Código (vbnet) [Seleccionar]

con.QueryDataReader("update departamentos set nombre='" & txtNomDepto.Text & "' where nombre='" & lblNomDepto.Text & "'")


Otro ejemplo es:
Código (vbnet) [Seleccionar]

lector = con.QueryDataReader("select * from departamentos")
        lstDeptos.Items.Clear()

        While lector.Read
            item = lstDeptos.Items.Add(lector(0))
            item.SubItems.Add(lector(1))
        End While
        lector.Close()


Espero sirva para que me compartan sus ideas.

Gracias
#7
Hola  a todos

Tengo una aplicación en vb.net + mysql. Donde para gestionar la interacción con mysql tengo una clase llamada clsDatabase. Cuando realizo consultas consecutivas mi aplicación se traba, como si se quedara congelada esperando algo, lo raro que no manda ningun mensaje de error, aunque le ponga la consulta dentro de un try.. catch.


Esta es mi clase para gestionar la base de datos:
Código (vbnet) [Seleccionar]

Imports Microsoft.VisualBasic
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Configuration

Public Class clsDatabase
    Private objConn As MySqlConnection
    Private objCmd As MySqlCommand
    Private Trans As MySqlTransaction
    Private strConnString As String

    Public Sub New()
        strConnString = "server=" & iServer & "; uid=" & iUser & "; pwd=" & iPassword & "; port=" & iPuerto & "; database=" & iBaseDatos & ";connection timeout=3600;"
    End Sub

    Public Function QueryDataReader(ByVal strSQL As String) As MySqlDataReader
        Dim dtReader As MySqlDataReader
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        objCmd = New MySqlCommand(strSQL, objConn)
        dtReader = objCmd.ExecuteReader()
        Return dtReader '*** Return DataReader ***'
    End Function

    Public Function QueryDataSet(ByVal strSQL As String) As DataSet
        Dim ds As New DataSet
        Dim dtAdapter As New MySqlDataAdapter
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        objCmd = New MySqlCommand
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With
        dtAdapter.SelectCommand = objCmd
        dtAdapter.Fill(ds)
        Return ds   '*** Return DataSet ***'
    End Function

    Public Function QueryDataTable(ByVal strSQL As String) As DataTable
        Dim dtAdapter As MySqlDataAdapter
        Dim dt As New DataTable
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        dtAdapter = New MySqlDataAdapter(strSQL, objConn)
        dtAdapter.Fill(dt)
        Return dt '*** Return DataTable ***'
    End Function

    Public Function QueryExecuteNonQuery(ByVal strSQL As String) As Boolean
        'MsgBox(strSQL)
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Try
            objCmd = New MySqlCommand()
            With objCmd
                .Connection = objConn
                .CommandType = CommandType.Text
                .CommandText = strSQL
            End With
            objCmd.ExecuteNonQuery()
            Return True '*** Return True ***'
        Catch ex As Exception
            MsgBox("ERROR EN QueryExecuteNonQuery" & Err.Description, MsgBoxStyle.Exclamation)
            Return False '*** Return False ***'
        End Try
    End Function

    Public Function QueryExecuteScalar(ByVal strSQL As String) As Object
        Dim obj As Object
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Try
            objCmd = New MySqlCommand()
            With objCmd
                .Connection = objConn
                .CommandType = CommandType.Text
                .CommandText = strSQL
            End With
            obj = objCmd.ExecuteScalar()  '*** Return Scalar ***'
            Return obj
        Catch ex As Exception
            MsgBox("ERROR:" & Err.Description)
            Return Nothing '*** Return Nothing ***'
        End Try
    End Function

    Public Function TransStart()
        objConn = New MySqlConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Trans = objConn.BeginTransaction(IsolationLevel.ReadCommitted)
    End Function

    Public Function TransExecute(ByVal strSQL As String) As Boolean
        objCmd = New MySqlCommand()
        With objCmd
            .Connection = objConn
            .Transaction = Trans
            .CommandType = CommandType.Text
            .CommandText = strSQL
        End With
        objCmd.ExecuteNonQuery()
    End Function

    Public Function TransRollBack()
        Trans.Rollback()
    End Function

    Public Function TransCommit()
        Trans.Commit()
    End Function

    Public Sub Close()
        Try
            objConn.Close()
            objConn = Nothing
        Catch ex As Exception
           
        End Try
       
    End Sub

End Class





Realizo consultas normales, para cortes de caja, reportes, ventas etc.  Durante horas puede trabajar bien, pero despues de un tiempo la aplicacion se traba y no da mas.

Cuando inicio la aplicacion declaro una instancia de  la clase :
Código (vbnet) [Seleccionar]
Public con as new clsDatabase
Y utilizo esa instancia en todos los formularios, no creo que se trabe porque se llega al full de pools, o conexiones a mysql, puesto que mantengo solo una conexión desde el inicio.
A menos que la clase esté haciendo un mal manejo de las conexiones con mysql?

Les agradezco de antemano cualquier tip, aportación o sugerencia para solucionar el problema.

Gracias  :)

[/size]

#8
Hola salu2 a todos

Estoy buscando la forma de comparar dos valores en memoria dinamica.
Hasta ahorita no he encontrado alguna opcion, alguien que me pueda echar un cable?

Gracias.
#9
Se agradece que lo compartas, ahora lo pruebo.

Podrías tomar los screen con SnagIt para que no salga toda tu pantalla.

Saludos..
#10
Grandisimo trabajo, se agradece.  ;-)

Podria alguien compartirlo en algun otro servidor por favor?

El megaupload ya está cerrado.


Gracias
.