在Ruby / Rails中模仿JSON Post请求到外部站点

时间:2013-10-31 20:13:49

标签: ruby-on-rails ruby

我试图模仿在Fedex.com上加载的POST请求,当他们正在加载包的跟踪信息时。

请求发布到的网址为https://www.fedex.com/trackingCal/track

并且它在请求中发送以获取完整JSON的数据是

#{"TrackPackagesRequest":{"appType":"wtrk","uniqueKey":"","processingParameters":{"anonymousTransaction":true,"clientId":"WTRK","returnDetailedErrors":true,"returnLocalizedDateTime":false},"trackingInfoList":[{"trackNumberInfo":{"trackingNumber":"61297641750622453544","trackingQualifier":"","trackingCarrier":""}}]}}

我的目标是在我的Rails应用程序中将跟踪号提供给此帖子请求并模仿网站正在做什么,点击端点并获取JSON或XML响应以在我的应用中解析和使用。

我不清楚如何做到这一点以及我迄今为止在net/httpopen-uri工作所做的努力。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

这是用于测试目的吗?如果是这样,请查看(https://github.com/vcr/vcr)您可以使用Webmock(https://github.com/bblimke/webmock

答案 1 :(得分:-1)

希望这会对你有所帮助。 [未经测试]

require "net/http"
url = URI.parse("https://www.fedex.com/trackingCal/track")
args = {
    "TrackPackagesRequest"= {
        "appType"= "wtrk",
        "uniqueKey"= "",
        "processingParameters"= {
            "anonymousTransaction"= true,
            "clientId"= "WTRK",
            "returnDetailedErrors"= true,
            "returnLocalizedDateTime"= false
        },
        "trackingInfoList"= [
            {
                "trackNumberInfo"= {
                    "trackingNumber"= "61297641750622453544",
                    "trackingQualifier"= "",
                    "trackingCarrier"= ""
                }
            }
        ]
    }
resp, data = Net::HTTP.post_form(url, args)
response = JSON.parse(data)
print response.inspect