Tôi đang có một thời gian vô lý cố gắng để có được một API SMS làm việc (ZeepMobile, nếu bạn quan tâm) với .NET ... Tôi đã xung quanh .NET trong một vài năm, nhưng với tất cả các công cụ mạng xã hội và API này, tôi cần phải truy cập vào HttpWebRequest một chút. Tôi mới ở đó, nhưng không hoàn toàn mới; Tôi đã có thể kết nối trang web của mình với Twitter mà không quá nhiều phiền toái (ví dụ, tôi có thể sửa đổi mã của ai đó để làm việc cho tôi).Xử lý lỗi từ HttpWebRequest.GetResponse
Dù sao, cách API của họ hoạt động là gửi tin nhắn SMS, bạn gửi cho họ một POST và họ trả lời lại cho bạn. Tôi có thể gửi nó tốt, nhưng mỗi khi tôi làm, thay vì lặp lại một cái gì đó hữu ích để tìm ra lỗi là gì, tôi nhận được trang lỗi màu vàng của cái chết (YEPOD) nói điều gì đó có hiệu lực của "Máy chủ từ xa trả về lỗi: (400) Yêu cầu không hợp lệ ". Điều này xảy ra trên dòng của tôi:
'...creation of httpwebrequest here...'
Dim myWebResponse As WebResponse
myWebResponse = request.GetResponse() '<--- error line
Có cách nào đơn giản nhận lỗi từ máy chủ thay vì yêu cầu máy chủ web ném ngoại lệ và cung cấp cho tôi YEPOD không?
Hoặc tốt hơn, bất kỳ ai cũng có thể đăng một ví dụ hoạt động về mã Zeep của họ? :)
Cảm ơn!
EDIT: Dưới đây là toàn bộ khối mã của tôi:
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, là có một cách để chỉ xem những gì các tiêu đề là của cả gửi và nhận? Tôi đang cố gắng sử dụng công cụ tìm kiếm nhưng tôi không biết cách sử dụng nó hoặc nó hoàn toàn không hữu ích ... – Jason
Vui lòng cung cấp mã yêu cầu – cdm9002
ps - đối với những người cố gắng để mã zeep của bạn hoạt động, mã trên sẽ trả về 400 Yêu cầu không hợp lệ: "Thời gian tin nhắn khác nhiều so với đồng hồ máy chủ hoặc tiêu đề Ngày không được cung cấp." Vẫn còn làm việc trên đó, vì bạn không thể sửa đổi tiêu đề "Ngày" ... – Jason