来自Python的QPX Express API [英] QPX Express API from Python

查看:153
本文介绍了来自Python的QPX Express API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从python使用Google的QPX Express API。我在发送请求时遇到了一对问题。起初我试过的是这样的:

I am trying to use Google's QPX Express API from python. I keep running into a pair of issues in sending the request. At first what I tried is this:

url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=MY_KEY_HERE"
values = {"request": {"passengers": {"kind": "qpxexpress#passengerCounts", "adultCount": 1}, "slice": [{"kind": "qpxexpress#sliceInput", "origin": "RDU", "destination": location, "date": dateGo}]}}
data = json.dumps(values)
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
f.close()
print(response)

基于以下代码: urllib2和json

当我运行上面的代码时,我得到以下错误消息:

When I run the above code I get the following error message:

TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.

我搜索了一个解决方案,并根据以下问题修改了我的代码:

I searched for a solution and adapted my code based upon the following question: TypeError: POST data should be bytes or an iterable of bytes. It cannot be str

我将我的代码更改为:

url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=AIzaSyCMp2ZnKI3J91sog7a7m7-Hzcn402FyUZo"
values = {"request": {"passengers": {"kind": "qpxexpress#passengerCounts", "adultCount": 1}, "slice": [{"kind": "qpxexpress#sliceInput", "origin": "RDU", "destination": location, "date": dateGo}]}}
data = json.dumps(values)
data = data.encode("utf-8")
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
f.close()
print(response)

但是,当我运行此代码时,出现以下错误消息:

However, when I run this code I get the following error message:

urllib.error.HTTPError: HTTP Error 400: Bad Request

我也尝试将utf-8更改为ascii,但我没有成功。如何才能正常工作?

I also tried changing utf-8 to ascii but I was unsuccessful. How can I get this working properly?

推荐答案

这是一个使用excelent请求库的解决方案。

Here is a solution using the excelent requests library.

import json
import requests

api_key = "YOUR API KEY HERE"
url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=" + api_key
headers = {'content-type': 'application/json'}

params = {
  "request": {
    "slice": [
      {
        "origin": "TXL",
        "destination": "LIM",
        "date": "2015-01-19"
      }
    ],
    "passengers": {
      "adultCount": 1
    },
    "solutions": 2,
    "refundable": False
  }
}

response = requests.post(url, data=json.dumps(params), headers=headers)
data = response.json()
print data

我不确定你为什么要求不起作用。也许它确实是错误的请求参数。日期肯定需要在将来!

I am not sure why you request is not working. Maybe it is really the request parameters that were wrong. The date definitely needs to be in the future!

这篇关于来自Python的QPX Express API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆