Ich habe eine lächerliche Zeit versucht, eine SMS-API (ZeepMobile, wenn Sie interessiert sind) mit .NET zu bekommen ... Ich bin seit ein paar Jahren mit .NET, Aber mit all diesen Social-Networking-und API-Zeug, muss ich ein wenig in die HttpWebRequest bekommen. Ich bin neu darin, aber nicht ganz neu; Ich war in der Lage, meine Seite ohne viel Aufhebens mit Twitter zu verbinden (dh ich konnte den Code von jemandem ändern, um für mich zu arbeiten).Fehlerbehandlung von HttpWebRequest.GetResponse
Wie auch immer, die Art, wie ihre API funktioniert, ist eine SMS zu senden, senden Sie ihnen einen POST und sie antworten Ihnen zurück. Ich kann es gut senden, aber jedes Mal, wenn ich etwas zurückgebe, was hilfreich ist, um herauszufinden, was der Fehler ist, bekomme ich die gelbe Fehlerseite des Todes (YEPOD), die etwas mit dem Effekt "Der entfernte Server antwortet Fehler: (400) Schlechte Anfrage. Dies geschieht auf meiner Linie:
'...creation of httpwebrequest here...'
Dim myWebResponse As WebResponse
myWebResponse = request.GetResponse() '<--- error line
Gibt es eine Möglichkeit die Fehler vom Server einfach zu erhalten, anstatt haben den Web-Server eine Ausnahme aus und geben Sie mir die YEPOD?
Oder noch besser, kann jemand ein funktionierendes Beispiel ihres Zeep-Codes veröffentlichen? :)
Danke!
EDIT: Hier ist meine ganze Codeblock:
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, ist es eine Möglichkeit, nur um zu sehen, was die Header sind sowohl in der Sende- und Empfangs? Ich versuche Fiddler zu verwenden, aber entweder weiß ich nicht, wie ich es benutzen soll oder es ist einfach völlig nutzlos ... – Jason
Bitte geben Sie Ihren Anfragecode an – cdm9002
ps - für diejenigen, die versuchen, Ihren Zeep Code zum Funktionieren zu bringen, wird der obige Code eine 400 Bad Request: "Nachricht Zeit unterscheidet sich viel von Server Uhr oder Datum Header wurde nicht geliefert." Arbeiten Sie noch daran, da Sie den Header "Date" nicht ändern können ... – Jason