【发布时间】:2014-02-20 09:49:01
【问题描述】:
我正在部署一个向 Google Maps Geolocation API 发出请求的应用程序。我的请求从我的工作站顺利通过。但是每次我从亚马逊云中的服务器运行它时都会收到 400 Bad Request 错误。
下面是我要测试的示例 curl 请求。正在使用的 API 允许使用任何 IP。
curl -d "{'wifiAccessPoints':[{'macAddress':'c8:d7:19:16:3b:63'},{'macAddress':'c8:d7:19:16:3b:61'}]}" -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=PUTYOURKEYHERE" -v
以下是错误结果的示例
* About to connect() to www.googleapis.com port 443 (#0)
* Trying 173.194.76.95... connected
* Connected to www.googleapis.com (173.194.76.95) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using SSL_RSA_WITH_RC4_128_SHA
* Server certificate:
* subject: CN=*.googleapis.com,O=Google Inc,L=Mountain View,ST=California,C=US
* start date: Jan 15 14:37:40 2014 GMT
* expire date: May 15 00:00:00 2014 GMT
* common name: *.googleapis.com
* issuer: CN=Google Internet Authority G2,O=Google Inc,C=US
> POST /geolocation/v1/geolocate?key=AIzaSyDzcv8DIbbeGBaONSq2kXh7g9AZbgsiUC8 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: www.googleapis.com
> Accept: */*
> Content-Type: application/json
> Content-Length: 93
>
< HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
< Content-Type: application/json; charset=UTF-8
Content-Type: application/json; charset=UTF-8
< Date: Thu, 30 Jan 2014 10:56:18 GMT
Date: Thu, 30 Jan 2014 10:56:18 GMT
< Expires: Thu, 30 Jan 2014 10:56:18 GMT
Expires: Thu, 30 Jan 2014 10:56:18 GMT
< Cache-Control: private, max-age=0
Cache-Control: private, max-age=0
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< Server: GSE
Server: GSE
< Alternate-Protocol: 443:quic
Alternate-Protocol: 443:quic
< Transfer-Encoding: chunked
Transfer-Encoding: chunked
<
{
"error": {
"errors": [
{
"domain": "geolocation",
"reason": "invalidRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
* Connection #0 to host www.googleapis.com left intact
* Closing connection #0
【问题讨论】:
-
Google Geocoding service returns Error 400 Bad Request 的可能重复项。但是您可能需要使用客户端地理编码器。 Keys aren't allowed in the Geocoding API。共享服务器共享来自服务器的地理编码器请求的配额(除非您有 Maps for Business 客户端 ID)。
-
我使用的是 Geolocation API,而不是 Geocoding API。上述请求适用于我测试它的所有地方,除了来自亚马逊。
-
您能否包含 curl
-v开关并共享您的 EC2 实例的 curl 输出? -
按要求添加详细结果
-
@steve 当我使用详细开关运行 curl 时,我确实看到了一个重要的区别,
* upload completely sent off: 93 out of 93 bytes
标签: google-maps-api-3 google-api google-geocoding-api google-geolocation