【问题标题】:Parsing a rest response with multipart/form-data使用 multipart/form-data 解析休息响应
【发布时间】:2019-06-13 14:27:34
【问题描述】:

解析包含 multipart/form-data 的 API 响应

我尝试了以下方法,但它不起作用。寻找建议

API 响应:

    ----1560435280902
    Content-Type: application/json

    {"code":"200","transactionTimestamp":1560435280902,"data":{"imagedDocument": 
    [{"proNumber":"951182326","imageType":"BL","imageFormat":"PDF","imageFiles": 
 [{"base64Data":"Jg==","fileName":"951182326_BL.pdf","contentType":"application/pdf"}],"scanDate":1559312081112}]}}
----1560435280902--

我尝试过的代码

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
        Dim client = New RestClient("https://api.ltl.xpo.com/imaging/1.0/shipments/951182326/imaged-docs?imageFormat=PDF&multiPartResp=False&imageType=BL")
        Dim request = New RestRequest(Method.[GET])
        request.AddHeader("cache-control", "no-cache")
        request.AddHeader("Connection", "keep-alive")
        request.AddHeader("accept-encoding", "gzip, deflate")
        request.AddHeader("Host", "api.ltl.xpo.com")
        request.AddHeader("Cache-Control", "no-cache")
        request.AddHeader("Accept", "*/*")
        request.AddHeader("Authorization", "Bearer " + accessToken)
        Dim response As IRestResponse = client.Execute(request)

        Dim token As XPOImage = Newtonsoft.Json.JsonConvert.DeserializeObject(Of XPOImage)(response.Content)



Public Class ImageFile
Public Property base64Data As String
Public Property fileName As String
Public Property contentType As String
End Class

Public Class ImagedDocument
Public Property proNumber As String
Public Property imageType As String
Public Property imageFormat As String
Public Property imageFiles As ImageFile()
Public Property scanDate As Long
End Class

Public Class Data
    Public Property imagedDocument As ImagedDocument()
End Class

Public Class XPOImage
    Public Property code As String
    Public Property transactionTimestamp As Long
    Public Property data As Data
End Class

需要抓取base64编码的图片。

【问题讨论】:

  • 当我将原始 JSON 放入文件中,然后使用文件中的序列化代码而不是 response.Content 时,它可以工作。如果可用,也许可以使用 response.Data (stackoverflow.com/a/17172209/341762)。你能发布什么 response.Content 返回吗?
  • response.Content 返回我在上面的 API 响应
  • 获取 JSON 的正则表达式怎么样?
  • 我认为如果您使用的是 RestSharp,您应该有一个 client.Execute(request).Data 应该只是原始 JSON 而不必解析它。
  • 如果你想正确解析它,你必须去掉所有不是 JSON(页眉、页脚)的东西。

标签: c# json vb.net rest pdf


【解决方案1】:

我能够使用正则表达式从多部分响应中获取 JSON。

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    Dim client = New RestClient("https://api.ltl.xpo.com/imaging/1.0/shipments/951182326/imaged-docs?imageFormat=PDF&multiPartResp=False&imageType=BL")
    Dim request = New RestRequest(Method.[GET])
    request.AddHeader("cache-control", "no-cache")
    request.AddHeader("Connection", "keep-alive")
    request.AddHeader("accept-encoding", "gzip, deflate")
    request.AddHeader("Host", "api.ltl.xpo.com")
    request.AddHeader("Cache-Control", "no-cache")
    request.AddHeader("Accept", "*/*")
    request.AddHeader("Authorization", "Bearer " + accessToken)
    Dim response As IRestResponse = client.Execute(request)

    Dim regexResponse = Regex.Match(response.Content, "\{.*\:\{.*\:.*\}\}")

    Dim token As XPOImage = Newtonsoft.Json.JsonConvert.DeserializeObject(Of XPOImage)(regexResponse.ToString())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2013-12-11
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2016-02-18
    • 2020-10-26
    • 2012-04-04
    相关资源
    最近更新 更多