Estoy teniendo un tiempo ridículo tratando de obtener una API de SMS trabajando (ZeepMobile, si está interesado) con .NET ... He estado alrededor de .NET durante algunos años, pero con todas estas redes sociales y material de API, necesito ingresar un poco a HttpWebRequest. Soy nuevo en eso, pero no completamente nuevo; Pude conectar mi sitio a Twitter sin demasiado alboroto (es decir, pude modificar el código de alguien para que funcione para mí).Manejo de errores de HttpWebRequest.GetResponse
De todos modos, la forma en que funciona su API es enviar un mensaje de texto, usted les envía un POST y responden de nuevo a usted. Puedo enviarlo muy bien, pero cada vez que lo hago, en lugar de repetir algo útil para descubrir cuál es el error, obtengo la página de error de muerte amarilla (YEPOD) diciendo algo en el sentido de "El servidor remoto devolvió una error: (400) Solicitud incorrecta ". Esto ocurre en mi línea:
'...creation of httpwebrequest here...'
Dim myWebResponse As WebResponse
myWebResponse = request.GetResponse() '<--- error line
¿Hay alguna manera de recibir simplemente el error desde el servidor en lugar de que el servidor web una excepción y dame la YEPOD?
O mejor aún, ¿alguien puede publicar un ejemplo de trabajo de su código Zeep? :)
Gracias!
EDIT: Aquí es toda mi bloque de código:
Public Shared Function SendTextMessage(ByVal username As String, _
ByVal txt As String) As String
Dim content As String = "user_id=" + _
username + "&body=" + Current.Server.UrlEncode(txt)
Dim httpDate As String = DateTime.Now.ToString("r")
Dim canonicalString As String = API_KEY & httpDate & content
Dim encoding As New System.Text.UTF8Encoding
Dim hmacSha As New HMACSHA1(encoding.GetBytes(SECRET_ACCESS_KEY))
Dim hash() As Byte = hmacSha.ComputeHash(encoding.GetBytes(canonicalString))
Dim b64 As String = Convert.ToBase64String(hash)
'connect with zeep'
Dim request As HttpWebRequest = CType(WebRequest.Create(_
"https://api.zeepmobile.com/messaging/2008-07-14/send_message"), HttpWebRequest)
request.Method = "POST"
request.ServicePoint.Expect100Continue = False
' set the authorization levels'
request.Headers.Add("Authorization", "Zeep " & API_KEY & ":" & b64)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = content.Length
' set up and write to stream'
Dim reqStream As New StreamWriter(request.GetRequestStream())
reqStream.Write(content)
reqStream.Close()
Dim msg As String = ""
msg = reqStream.ToString
Dim myWebResponse As WebResponse
Dim myResponseStream As Stream
Dim myStreamReader As StreamReader
myWebResponse = request.GetResponse()
myResponseStream = myWebResponse.GetResponseStream()
myStreamReader = New StreamReader(myResponseStream)
msg = myStreamReader.ReadToEnd()
myStreamReader.Close()
myResponseStream.Close()
' Close the WebResponse'
myWebResponse.Close()
Return msg
End Function
ps, ¿hay una manera de ver exactamente lo que los encabezados son tanto de la emisión y la recibirán? Estoy tratando de usar el violín pero no sé cómo usarlo o es completamente inútil ... – Jason
Por favor ingrese su código de solicitud – cdm9002
ps - para aquellos que intentan hacer que su código zeep funcione, el código anterior será devuelve una solicitud incorrecta 400: "El tiempo del mensaje difiere mucho del reloj del servidor o no se proporcionó el encabezado Fecha". Todavía estoy trabajando en eso, ya que no puedes modificar el encabezado "Fecha" ... – Jason