2011-05-24 166 views
5

Lo que intento hacer es que mi usuario ingrese un número de teléfono y un mensaje, y luego lo publique en un comercializador de texto que envíe el mensaje.¿Cómo enviar un POST en .net vb?

en el momento si uso un response.redirect el sentido mensaje ..

response.redirect("http://www.textmarketer.biz/gateway/?username=*****&password=*****&message=test+message&orig=test&number=447712345678") 

Sin embargo, no quiero enviar al usuario allí. Todo lo que quiero es publicar los datos en la url y eso es todo por ahora y el usuario permanece en la página actual.

¿Algún ayuda?

+0

el ejemplo que publicó no 'POST' los datos. Esa es una solicitud GET (los datos están en la cadena url/consulta). Si necesita POSTAR, como dice, eche un vistazo a mi respuesta modificada a continuación. – Mel

Respuesta

7

realidad, usted no tiene que hacer este lado del servidor (VB), simplemente HTML plano hará el truco:

<html> 
    <body> 
     <form action="http://google.com" method="post"> 
      <input type="hidden" value="somevalue"/> 
      <input Type="submit" value="Submit"/> 
     </form> 
    </body> 
</html> 

esto va a publicar los datos (y en efecto, redirigir) a google.com.

Quizás podría utilizar el script del cliente (jQuery) - $ .ajax() o $ .post(). pero creo que enfrentarás restricciones de dominios cruzados (hay una solución pero no es tan clara y directa).

Otro está utilizando la clase HttpWebRequest. Esto es del lado del servidor y la publicación se originará desde su servidor en lugar del cliente (como lo hará el primer enfoque). al realizar la solicitud request.GetResponse(), puede recuperar el resultado del servidor remoto y presentarlo en su página. Pero si desea publicar y redirigir a la URL remota, entonces creo que debería usar el primer acercamiento.

EDIT:

probar esto en VB:

Option Infer On 
Imports System.Net 
Imports System.Text 


Public Class Test 

    Private Sub TESTRUN() 
     Dim s As HttpWebRequest 
     Dim enc As UTF8Encoding 
     Dim postdata As String 
     Dim postdatabytes As Byte() 
     s = HttpWebRequest.Create("http://www.textmarketer.biz/gateway/") 
     enc = New System.Text.UTF8Encoding() 
     postdata = "username=*****&password=*****&message=test+message&orig=test&number=447712345678" 
     postdatabytes = enc.GetBytes(postdata) 
     s.Method = "POST" 
     s.ContentType = "application/x-www-form-urlencoded" 
     s.ContentLength = postdatabytes.Length 

     Using stream = s.GetRequestStream() 
      stream.Write(postdatabytes, 0, postdatabytes.Length) 
     End Using 
     Dim result = s.GetResponse() 
    End Sub 
End Class 

update2:

una petición GET utilizando HttpWebRequest en VB.net.

Dim s As HttpWebRequest 
Dim username = "username=" + HttpUtility.UrlEncode("yourusername") 
Dim password = "password=" + HttpUtility.UrlEncode("[email protected])!==&@(*#)[email protected]#(_") 
Dim message = "message=" + HttpUtility.UrlEncode("yourmessage") 
Dim orig = "orig=" + HttpUtility.UrlEncode("dunno what this is") 
Dim num = "number=" + HttpUtility.UrlEncode("123456") 
Dim sep = "&" 
Dim sb As New StringBuilder() 
sb.Append(username).Append(sep).Append(password).Append(sep) 
sb.Append(message).Append(sep).Append(orig).Append(sep).Append(num) 

s = HttpWebRequest.Create("http://www.textmarketer.biz/gateway/?" + sb.ToString()) 

s.Method = "GET" 
Dim result = s.GetResponse() 
+0

No quiero que el usuario lo redireccione. Solo quiero publicar los datos en la url y eso es todo. Idealmente en el lado del servidor, veré httpwebrequest, pero realmente no quiero una solicitud y creo que lo he intentado pero no hay éxito – Beginner

+0

¿El servidor remoto requiere autenticación o algo así? o tal vez una cookie requerida? – Mel

+0

No siento que tampoco haya funcionado, realmente no necesita una solicitud de ellos – Beginner

2

No haga este lado del servidor, pero el lado del cliente que usa AJAX.

La biblioteca jQuery ajax es bastante buena.

+0

No tengo experiencia con Ajax, así que no estoy seguro de lo que significa todo y por dónde empezar – Beginner

+0

Por eso preferiría encontrar una opción del lado del servidor – Beginner

+0

@Beginner - no debe tener miedo de aprender una nueva tecnología, especialmente si es el correcto ... – Oded

2

tienes que usar la clase webrequest. consulte http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

+0

Intenté este ejemplo exacto antes de publicar esta pregunta. Pensé que funcionaría pero nada. – Beginner

+0

¿recibe alguna excepción? verifique el uri que está publicando y los parámetros que espera. – Aravind

+0

He copiado los mismos parámetros que utilicé cuando utilicé response.redirect, que envió el mensaje enviado – Beginner

Cuestiones relacionadas