我正在使用azure地图服务的GET网址从纬度和经度获取时区。 https://docs.microsoft.com/en-us/rest/api/maps/timezone/gettimezonebycoordinates
当我与邮递员一起尝试时,我得到了正确的时区,但是当我从代码中执行相同的操作时,我没有得到正确的响应。
let url =
"https://atlas.microsoft.com/timezone/byCoordinates/json?subscription-key=" +
subsciptionKey +
"&api-version=1.0&query=" +
latitude +
"," +
longitude;
var settings = {
async: true,
url: url,
method: "GET",
header: {
// "x-ms-client-id": "3f13b1ef-547e-4594-b5db-7a70a68d3799",
"Accept-Language": "EN"
}
};
$.ajax(settings).done(function(response) {
console.log(response);
以下是我从邮递员那里得到的结果,
{
"Version": "2019a",
"ReferenceUtcTimestamp": "2019-04-02T13:51:58.6714007Z",
"TimeZones": [
{
"Id": "Asia/Kolkata",
"Names": {
"ISO6391LanguageCode": "EN",
"Generic": "India Standard Time",
"Standard": "India Standard Time",
"Daylight": "India Standard Time"
},
"ReferenceTime": {
"Tag": "IST",
"StandardOffset": "05:30:00",
"DaylightSavings": "00:00:00",
"WallTime": "2019-04-02T19:21:58.6714007+05:30",
"PosixTzValidYear": 2019,
"PosixTz": "IST-5:30"
}
}
]
}
但是对于我的代码,“ Generic”字段为空。它说“没有提供支持的语言代码”。
Id:“亚洲/加尔各答” 名称: 白天:“” 通用:“” ISO6391LanguageCode:“未提供支持的语言代码” 标准:“”
答案 0 :(得分:0)
如错误消息所述,这是由于服务无法确定时区的语言/本地化支持所致。
在您的情况下,问题似乎是您试图通过jQuery的ajax
函数向AJAX请求添加标头,但请注意,它们指定标头的属性是headers
,而不是{ {1}}照常使用。因此,您需要将设置更改为:
header
我实际上也遇到了var settings = {
async: true,
url: url,
method: "GET",
headers: {
"Accept-Language": "EN"
}
};
错误,但原因有所不同。如果我使用Postman访问如下网址:
并将No supported language code supplied
标头设置为他们不支持的位置代码,它将返回Accept-Language
错误。
我将ISO6391LanguageCode: "No supported language code supplied"
标头设置为在他们的Localization support in Azure Maps页上列出的位置代码,例如Accept-Language
,很奇怪,我会收到该错误消息。
如果我改为将位置代码更改为en-US
,则可以使用。
您可以通过以下任一方式获取有效的时区名称:
en
代替en
)。