Umgang mit Fehlern von HttpWebRequest.GetResponse

Bin ich mit einer lächerlichen Zeit versuchen, um eine SMS-API arbeiten (ZeepMobile, wenn Sie interessiert sind).NET... hab ich schon .NETZ für ein paar Jahre, aber mit alle diese social-networking-und API-Sachen, die ich brauche, um in die HttpWebRequest ein bisschen. Ich bin neu, aber nicht ganz neu; ich war in der Lage, um hook up meine Website auf Twitter, ohne allzu viel Firlefanz (also, ich war in der Lage zu ändern jemand den code für mich zu arbeiten).

Egal, wie Sie Ihre API funktioniert ist der SMS-Nachricht zu senden, senden Sie Sie ein nach und Sie reagieren auf Sie zurück. Ich kann senden Sie es nur gut, aber jedes mal, wenn ich es Tue, eher als echo zurück etwas hilfreich, um herauszufinden, was der Fehler ist, ich bekomme die Gelbe Fehler-Seite Des Todes (YEPOD) sagte etwas zum Effekt von "Der Remoteserver hat einen Fehler zurückgegeben: (400) ungültige Anforderung." Dies geschieht auf meiner Linie:

'...creation of httpwebrequest here...'
Dim myWebResponse As WebResponse
myWebResponse = request.GetResponse() '<--- error line

Gibt es eine Möglichkeit, einfach die Fehlermeldung aus dem server anstatt der webserver eine Ausnahme und gib mir die YEPOD?

Oder noch besser, kann mir jemand die post-ein Beispiel für Ihre Zeep-code? 🙂

Dank!

EDIT: Hier ist mein gesamter code-block:

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 ein Weg, um nur anzeigen, was die überschriften sind sowohl senden als auch empfangen? ich versuche, fiddler, aber entweder ich weiß nicht, wie es zu benutzen oder es ist einfach nur komplett nutzlos...
Bitte geben Sie Ihren Wunsch-code
ps - für diejenigen, die versuchen, um Ihre zeep-code zu arbeiten, der obige code wird zurückgeben 400 Bad Request: die Nachricht "der Zeit unterscheidet sich zu viel vom server clock oder Date-header wurde nicht angegeben." Noch auf Arbeit, da können Sie nicht ändern Sie die "Date" - header...

InformationsquelleAutor Jason | 2009-07-16

Schreibe einen Kommentar