|
**.** 经过整理,加入了不同情况下灵活处理的写法
Public Class Class1
Public Sub New()
'参考:如果发送服务器接受字符识别有问题,可参考
Dim myEncoding As Encoding = Encoding.GetEncoding("utf8")
Dim param As String = HttpUtility.UrlEncode("参数一", myEncoding) & "=" & HttpUtility.UrlEncode("值一", myEncoding) & "&" & HttpUtility.UrlEncode("参数二", myEncoding) & "=" & HttpUtility.UrlEncode("值二", myEncoding)
'POST 中文数据的时候,先使用 UrlEncode 方法将中文字符转换为编码后的 ASCII 码,然后提交到服务器,提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。
Dim AppId As String = "********"
Dim AppKey As String = "***********"
Dim formData As String = [String].Format("title={0}&content={1}&type={2}&timer={3}&platform={4}&groupName={5}", "MsgTitleForServer", "MsgContentForServer", 1, 0, 2, _
"全部分组")
Dim url As String = [String].Format("https://p.apicloud.com/api/push/message")
Dim request As HttpWebRequest = TryCast(HttpWebRequest.Create(url), HttpWebRequest)
request.Method = "POST"
request.Headers.Add("X-APICloud-AppId", AppId)
request.Headers.Add("X-APICloud-AppKey", GetSHA1Key(AppId, AppKey))
request.ContentType = "application/x-www-form-urlencoded"
'request.ContentType = "application/x-www-form-urlencoded;charset=utf8";
'根据实际情况看是否添加ASCII或utf8转换,如果使用写法1里面的formData需要改成bs
'byte[] bs = Encoding.ASCII.GetBytes(formData);
Dim bs As Byte() = Encoding.UTF8.GetBytes(formData)
request.ContentLength = bs.Length
'处理的写法1(阿虎):
Using reqStream As Stream = request.GetRequestStream()
Dim reqWriter As New StreamWriter(reqStream)
reqWriter.Write(formData)
Using response = TryCast(request.GetResponse(), HttpWebResponse)
Using respSream As Stream = response.GetResponseStream()
Dim respReader As New StreamReader(respSream)
Dim result As String = respReader.ReadToEnd()
Console.WriteLine(result)
End Using
End Using
End Using
'处理的写法2(参考学习的):
Using reqStream As Stream = req.GetRequestStream()
reqStream.Write(bs, 0, bs.Length)
End Using
'在这里对接收到的页面内容进行处理
Using wr As WebResponse = req.GetResponse()
End Using
End Sub
Private Shared Function GetSHA1Key(AppId As [String], AppKey As [String]) As [String]
Dim longTime As Long = CLng((DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds)
Dim value As [String] = [String].Format("{0}UZ{1}UZ{2}", AppId, AppKey, longTime)
Dim buffer As Byte() = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(value))
Dim builder As New StringBuilder()
For Each num As Byte In buffer
builder.AppendFormat("{0:x2}", num)
Next
Return builder.ToString() & "." & longTime
End Function
End Class
|
|