所以我的目标是向api发送HttpRequest,它返回500内部服务器错误。 根据他们的说法,其他公司都在成功使用此Api,因此它在理论上应该有效。我发送了我用来测试它是否有效的json示例字符串,他们确认它是正确的。那是什么原因导致错误?
Public Function SendStringToHttpServer(dataString As String, uriString As String, credentials As NetworkCredential) As String
Dim resultInfo As String
Dim request As HttpWebRequest = CType(WebRequest.Create(uriString), HttpWebRequest)
request.Credentials = credentials
request.Timeout = 6000
request.Method = "POST"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(dataString)
request.ContentType = "application/json"
request.ContentLength = byteArray.Length
Try
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
reader.Close()
response.Close()
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
Return "done"
End Function
注意:我看到有一些类似的线程,例如this。但我使用的方式完全相同,因此它应该可以工作,但不能-.- (除了我严格要求并因此明确投放的事实)
编辑:关于身份验证方法:这肯定会起作用,因为如果我在credenitals中使用错误的用户名或密码,我会得到403:授权错误,而不是500。
此外,读取请求也可以正常工作。读取请求非常类似,只是一个基本的HttpRequest,它仅需要url和凭据。
编辑2:因此,我读到它可以与HttpRequest自动绑定在一起,并在标头中自动添加“ Expect:100-continue”。我现在防止这样做
ServicePointManager.Expect100Continue = False
但是它仍然给出500错误。