【发布时间】: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(页眉、页脚)的东西。