【问题标题】:Post JSON data to web server in vb.net using JSON.Net使用 JSON.Net 将 JSON 数据发布到 vb.net 中的 Web 服务器
【发布时间】:2015-03-20 15:39:56
【问题描述】:

我正在尝试以 JSON 格式将数据发布到网站,但无论我做什么,都会收到 500 内部错误。

我打算创建的字符串是这样的:{"orders":[{"id":"7","invoice_number":"1007"},{"id":"8","invoice_number" :"1008"},{"id":"11","invoice_number":"1011"}]} ,我可以通过 JSON.net 轻松获得

网站站长发给我这个命令是为了发布数据

curl -vvvvvvvv "http://staging.voltige2001.net/fr/api/update-orders" --data '{"orders":[{"id":"7","invoice_number":"1007"},{"id":"8","invoice_number":"1008"},{"id":"11","invoice_number":"1011"}]}' -X PATCH

但我不知道什么是 curl 以及这与我所做的有何不同。

这是我的代码:

    Dim strInvNumber As String

    If Not IsNothing(oDsFacture) AndAlso oDsFacture.Tables.Count > 0 AndAlso oDsFacture.Tables(0).Rows.Count > 0 Then
        strInvNumber = oDsFacture.Tables(0).Rows(0)("No_Facture")
    Else
        strInvNumber = "9999" ' Pas de facture
    End If

    Dim oOrder As New Confirmation.Order With {.ID = oCommande.ID, .InvoiceNumber = strInvNumber}

    Dim oConfirmation As New Confirmation With {.Orders = New List(Of Confirmation.Order) From {oOrder}}
    Dim strResponse As String = JsonConvert.SerializeObject(oConfirmation)

    Dim data = Encoding.UTF8.GetBytes(strResponse)


    Dim req As WebRequest = WebRequest.Create(_ResponseURL)
    req.ContentType = "application/json"
    req.Method = "POST"
    'req.ContentLength = strResponse.Length

    Using oStream As New StreamWriter(req.GetRequestStream)
        oStream.Write(strResponse)
        oStream.Flush()
        oStream.Close()
    End Using

    Try
        Dim response As HttpWebResponse = req.GetResponse
        Using oSReader As New StreamReader(response.GetResponseStream)

        End Using
    Catch ex As Exception

    End Try

这是我用来转换为 JSON 的类

Public Class Confirmation


Public Class Order
    <JsonProperty("id")> Public Property ID As String
    <JsonProperty("invoice_number")> Public Property InvoiceNumber As String
        End Class

<JsonProperty("orders")> Public Property Orders As List(Of Order)
End Class

【问题讨论】:

    标签: json vb.net json.net


    【解决方案1】:

    curl 是一个用于传输网络数据的命令行工具。这是手册页:man.cx/curl

    curl 示例中的 -X 选项表示使用 GET 以外的其他内容。在这种情况下,他们期待 PATCH。试试req.Method = PATCH

    我之前没有遇到过 PATCH 方法,RFC 的摘要使它听起来像一个 HTTP upsert:

    PATCH 方法请求在 请求实体应用于请求标识的资源- URI。更改集以称为“补丁”的格式表示 document”由媒体类型标识。如果 Request-URI 没有 指向一个现有资源,服务器可以创建一个新资源, 取决于补丁文件类型(是否可以在逻辑上修改 一个空资源)和权限等。

    【讨论】:

    • 大概就是这样。我现在又遇到了一个错误,但它似乎更像是造成问题的防火墙,这与我无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多