如何使用WebRequest将文件发布到网站

时间:2019-02-26 14:10:09

标签: vb.net webrequest

这是我第一次编写将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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我没有具体的答案可以解决您的问题。但是一些技巧可能会有所帮助。

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文档和示例代码

https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-send-data-using-the-webrequest-class