首页 > 解决方案 > 如何将原始 json 数据发送到 vb.net 中的 put 方法?

问题描述

我正在尝试将原始数据发送到 PUT 方法,但由于“远程服务器返回错误:(502)错误网关”而出现错误,但我尝试在 Postman 代理中使用相同的数据,它的工作。

我试过的

   Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String
    Dim req As WebRequest = WebRequest.Create(uri)
    req.ContentType = contentType
    req.Method = method
    req.ContentLength = jsonDataBytes.Length
    req.Headers.Add("x-api-key:xxxxxY0tZN55jbXnY05Oxxxxx")

    Dim stream = req.GetRequestStream()
    stream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
    stream.Close()

    Dim response = req.GetResponse().GetResponseStream()

    Dim reader As New StreamReader(response)
    Dim res = reader.ReadToEnd()
    reader.Close()
    response.Close()

    Return res
End Function

调用函数

    Dim postdata As String = "[{barcod:A0000041},{barcode:A0000113}]"
    Dim data = Encoding.UTF8.GetBytes(postdata)
  
    Dim Uri As New Uri("https://sample.com/xxxxx/xxxxx?funcName=UpdateBaarcode")

    Dim result_post = SendRequest(Uri, data, "text/plain", "PUT")

我错过了什么,请回复。

问候, 阿拉文德

标签: vb.netapirest

解决方案


对于 REST API

我通过 DirectCast 使用 WebRequest。

时间太久了,不记得为什么了。TT

试试下面的代码。

Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String

    Dim req As HttpWebRequest= DirectCast(WebRequest.Create(uri), HttpWebRequest)

    req.ContentType = contentType
    req.Method = method
    req.ContentLength = jsonDataBytes.Length
    req.Headers.Add("x-api-key:xxxxxY0tZN55jbXnY05Oxxxxx")

    Dim stream = req.GetRequestStream()
    stream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
    stream.Close()

    Dim response = DirectCast(req.GetResponse(), HttpWebResponse)

    Dim reader As New StreamReader(response.GetResponseStream)
    Dim res = reader.ReadToEnd()
    reader.Close()
    response.Close()

    Return res
End Function

推荐阅读