#json #fetch #response-headers #velo
#json #выборка #ответ-заголовки #velo
Вопрос:
Я пытаюсь собрать подробную информацию о свойствах недвижимости через внешний API. Я неустанно просматривал их документацию, но не могу понять, почему я получаю следующую ошибку:
invalid json response body at https://api.gateway.attomdata.com/propertyapi/v1.0.0/property/expandedprofile?address1=34 Karen Courtamp;address2=Bridgeport20%CT reason: Unexpected token < in JSON at position
Для справки я публикую свой код. Если кто-нибудь может предоставить какие-либо данные или рекомендации, я был бы очень признателен!
Внутренний код:
import { fetch } from 'wix-fetch';
import { wixData } from 'wix-data';
export function getDetails(address, citystatezip) {
const url = 'https://api.gateway.attomdata.com/propertyapi/v1.0.0/property/expandedprofile?address1=' address "amp;address2=" citystatezip;
let headers = {
"apikey": "xxxxxxxx",
"accept": "application/json"
};
let options = {
headers: headers
}
console.log("Url: " url);
return fetch(url, { method: 'get' })
.then(response => {
return response.json();
})
.then((data) => {
console.log(data);
return data;
});
}
Код страницы:
wixWindow.getCurrentGeolocation()
.then((obj) => {
let timestamp = obj.timestamp; // 1495027186984
let latitude = obj.coords.latitude; // 32.0971036
let longitude = obj.coords.longitude; // 34.774391099999995
let altitude = obj.coords.altitude; // null
let accuracy = obj.coords.accuracy; // 29
let altAccuracy = obj.coords.altitudeAccuracy; // null
let heading = obj.coords.heading; // null
let speed = obj.coords.speed;
console.log(obj)
reverse(latitude, longitude)
.then(geocode => {
console.log(geocode)
let id = geocode.results[0].place_id;
details(id)
.then(detailed => {
console.log(detailed)
$w("#input12").value = geocode.results[0].address_components[0].long_name " " geocode.results[0].address_components[1].long_name;
$w("#input10").value = geocode.results[0].address_components[3].long_name;
$w("#input11").value = geocode.results[0].address_components[5].long_name;
$w("#text37").text = geocode.results[0].formatted_address;
$w("#googleMaps2").location = {
"latitude": latitude,
"longitude": longitude,
"description": geocode.results[0].formatted_address
};
let address = geocode.results[0].address_components[0].long_name " " geocode.results[0].address_components[1].long_name;
let city = geocode.results[0].address_components[3].long_name;
let state = geocode.results[0].address_components[5].short_name;
let citystate = city "," " " state;
console.log(citystate)
const uri = address;
const encoded = encodeURI(uri);
console.log(encoded);
getDetails(encoded, citystate)
.then(got => {
console.log(got)
})
});
});
Заранее благодарим вас за любые предложения или рекомендации, которые вы можете предложить. Я потратил часы, пытаясь разобраться в этом, но безрезультатно.
Будьте в безопасности и будьте здоровы 😊
Комментарии:
1. Добавьте
console.log(response);
перед собойreturn response.json();
, чтобы увидеть, с чем он возвращается. Еще лучше: установите точку остановаreturn response.json();
и проверьте значение напрямую.2. @JohnH благодарю вас за ваш ответ. Я внес несколько изменений в код, пожалуйста, смотрите выше.
3. Спасибо за редактирование, но ведение журнала консоли должно происходить внутри вашей
getDetails()
функции. Ведение журнала после этого уже слишком поздно, потому что он пытается вернуть JSON. Как я упоминал в своем первом комментарии, вам необходимо проверить значениеresponse
, чтобы увидеть, не происходит лиresponse.json()
сбой.4. Я добавил точку останова, как было предложено, и теперь результат отображается как неопределенный. Какие-либо мысли или рекомендации? @JohnH