Ich habe eine lächerliche Zeit mit dem Versuch, eine SMS-API zum Laufen zu bringen ( ZeepMobile Ich habe um .NET für ein paar Jahre gewesen, aber mit all diesen sozialen Netzwerken und API-Zeug, muss ich in die HttpWebRequest ein bisschen zu bekommen. Ich bin neu darin, aber nicht völlig neu; Ich war in der Lage, meine Website zu Twitter ohne viel Aufhebens Haken (dh, ich war in der Lage, jemandes Code zu ändern, um für mich arbeiten).
Wie auch immer, die API funktioniert so, dass man eine SMS-Nachricht sendet, man sendet eine POST und sie antworten zurück. Ich kann sie problemlos senden, aber jedes Mal, wenn ich das tue, erhalte ich statt eines hilfreichen Echos, mit dem ich herausfinden kann, was der Fehler ist, die gelbe Fehlerseite des Todes (YEPOD), die etwas wie folgt besagt: "The remote server returned an error: (400) Bad Request." Dies geschieht in meiner Zeile:
'...creation of httpwebrequest here...'
Dim myWebResponse As WebResponse
myWebResponse = request.GetResponse() '<--- error line
Gibt es eine Möglichkeit, einfach den Fehler vom Server zu erhalten, anstatt dass der Webserver eine Ausnahme auslöst und mir den YEPOD gibt?
Oder noch besser: Kann jemand ein funktionierendes Beispiel für seinen Zeep-Code posten? :)
Gracias.
EDIT: Hier ist mein ganzer 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
0 Stimmen
Ps, gibt es eine Möglichkeit, einfach zu sehen, was die Header sind sowohl der senden und empfangen? ich versuche, Fiddler zu verwenden, aber entweder ich weiß nicht, wie es zu verwenden, oder es ist einfach völlig unhelpful...
0 Stimmen
Bitte geben Sie Ihren Anfragecode an
0 Stimmen
Ps - für diejenigen, die versuchen, ihren Zeep-Code zum Laufen zu bringen, wird der obige Code eine 400 Bad Request zurückgeben: "Die Nachrichtenzeit weicht zu stark von der Serveruhr ab oder der Date-Header wurde nicht übermittelt." Daran arbeiten wir noch, da man den "Date"-Header nicht ändern kann...