Как вы преобразуете это программирование JSON в XML для отправки через VBA - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть этот код с сайта доставки.Я могу отправить на шлюз, как и любой другой носитель, но у них нет отформатированного примера XML.Они привели этот пример, который я хотел знать, как преобразовать его в правильно отформатированный xml.

curl -X POST \
https://api.rocketship.it/v1 \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_RS_API_KEY' \
-d '{
"carrier": "UPS",
"action": "track",
"params": {
    "username": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "tracking_number": "1Z12345E0205271688"
}
}'

Мне просто нужны теги, такие как отправка в fedex или ups.Это то, что я представляю на транспак.Он имеет код xml и xmlhttp для его отправки.

XMLRequest1 = "<?xml version='1.0' encoding='utf-8'?>" & _
"<soap:Envelope xmlns:xsi=" & Chr(34) & "http://www.w3.org/2001/XMLSchema- 
instance" & Chr(34) & " xmlns:xsd=" & Chr(34) & 
"http://www.w3.org/2001/XMLSchema" & Chr(34) & " xmlns:soap=" & Chr(34) & 
"http://schemas.xmlsoap.org/soap/envelope/" & Chr(34) & ">" & _
"<soap:Body>" & "<ShipmentInquiry xmlns=" & Chr(34) & "http://tempuri.org/" 
& Chr(34) & ">" & "<Housebill>" & trackingNumber & "</Housebill>" & _
"</ShipmentInquiry>" & "</soap:Body>" & "</soap:Envelope>"

То есть xml, который мне нужно представить в приведенном выше примере.Мне нужно отформатировать аналогично.

XML_Method = "POST"

XML_Track_URL = "http://freight.transpak.com/WTKServices/Shipments.asmx"

On Error GoTo 0
TrackTRANSPACK = "Test" ' default if not supported or not tracked by request
Set XMLHTTP = CreateObject("Microsoft.xmlhttp")
XMLHTTP.Open XML_Method, XML_Track_URL, False
'xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
XMLHTTP.send XML_Request1 ' okay to send blank string, if not needed (non-UPS tracking)
TrackTRANSPACK = CStr(XMLHTTP.responseText)

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 апреля 2018

Мне нужно было отправить строку json, чтобы получить ответ json.

XML_Request1 = "{" & Chr(34) & "carrier" & Chr(34) & ": " & Chr(34) & 
"fedex" & Chr(34) & "," & Chr(34) & "type" & Chr(34) & ": " & Chr(34) & 
"TRACKING_NUMBER_OR_DOORTAG" & Chr(34) & "," & _
Chr(34) & "action" & Chr(34) & ": " & Chr(34) & "track" & Chr(34) & "," & 
Chr(34) & "parameters" & Chr(34) & ": {" & Chr(34) & "key" & Chr(34) & ": " 
& Chr(34) & "key" & Chr(34) & "," & _
Chr(34) & "password" & Chr(34) & ": " & Chr(34) & "password" & Chr(34) & "," 
& Chr(34) & "meterNumber" & Chr(34) & ": " & Chr(34) & "meter number" & 
Chr(34) & "," & _
Chr(34) & "accountNumber" & Chr(34) & ": " & Chr(34) & "account" & Chr(34) & 
"," & Chr(34) & "service" & Chr(34) & ": " & Chr(34) & 
"GROUND_HOME_DELIVERY" & Chr(34) & "," & _
Chr(34) & "tracking_number" & Chr(34) & ": " & Chr(34) & trackingNumber & 
Chr(34) & "}}"

Я пошел в онлайн-форматировщик json, чтобы собрать правильную строку:

{
"carrier": "fedex",
"type": "TRACKING_NUMBER_OR_DOORTAG",
"action": "track",
"parameters": {
  "key": "YOURKEY",
  "password": "YOURPASS",
  "meterNumber": "YOURMETER",
  "accountNumber": "510087348",
  "service": "GROUND_HOME_DELIVERY",
  "tracking_number": "."
 }
}

Я отправилполезный груз и получил правильный ответ.

...