这是我第一次编写将WebRequest发送到网站的代码。我收到错误403.只是想让某人查看代码并让我知道我是否遗漏了某些内容。被告知我们要使用基本授权。这是我将文件传递给例程POST的代码块。
Public Sub PostFile(ByVal lFileName As String)
Dim request As WebRequest = WebRequest.Create("https://somewebsite.com/jobs/api/inboundjob/?message-type=distributor&format=xml")
Dim usr As String = "jonesy@somewebsite"
Dim pwd As String = "1Jw8$PR9Sb"
Dim encoded As String = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(usr + ":" + pwd))
request.Headers.Add("Authorization", "Basic " + encoded)
request.Method = "POST"
Dim sr As StreamReader = New StreamReader(lFileName)
Dim postData As String = sr.ReadToEnd
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
dataStream = response.GetResponseStream()
Dim reader As StreamReader = New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
End Sub
谢谢你的帮助。
我没有一个能解决你问题的具体答案。但是一些提示可能会有所帮助。
HTTP 403错误
服务器禁止您访问此URL。尝试使用像Fiddler这样的工具来查看响应。你看到任何详细的信息吗?
如何处理来自WebRequest的异常消息?
您将需要处理WebException并从中获取响应。回应可能会有所帮助。
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/handling-errors
关于HTTP正文的编码
在发送HTTP请求的主体时,我不会直接使用Encoding.UTF8.GetBytes。我将使用StreamWriter类并在构造函数中指定request.GetDataStream。为什么?我无法确定字符串的基础编码。让Framework类找出并进行适当的转换。
MSDN文档和示例代码