2016-12-27 20 views
1

Я думаю, что это может быть очень простой вопрос, но я новичок в веб-запросов и может заставить его работать и не получить простой ответ поиска в ИнтернетеОтвет HTTP методом GET с использованием Params AXIOS в React Native

У меня есть сайт, на котором я могу получить ответ JSON, поместив этот URL в браузер: http://www.test.com/callservice.php?action=stop&x=1&y=2&ct=100

Это, в свою очередь, дает мне некоторый ответ JSON.

Теперь, я пытаюсь получить то же самое в Javascript, используя Axios.

Либо используя URL-адрес непосредственно

componentWillMount() { 
    axios.get('http://www.test.com/callservice.php?action=stop&x=1&y=2&ct=100') 
     .then(response => console.log(response)); 
    } 

Или с помощью GET Params:

componentWillMount() { 
    axios.get('http://www.test.com/callservice.php', { 
     params: { 
     action: 'stop', 
     x: 1, 
     y: 2, 
     ct=100 
     } 
    }) 
     .then(response => console.log(response)); 
    } 

Но оба подхода дают ту же ошибку:

Possible Unhandled Promise Rejection (id: 0): 
Network Error 
Error: Network Error 

И более подробные ошибки от ловли:

Error: Network Error 
    at createError (createError.js:15) 
    at XMLHttpRequest.handleError (xhr.js:87) 
    at XMLHttpRequest.dispatchEvent (event-target.js:172) 
    at XMLHttpRequest.setReadyState (XMLHttpRequest.js:542) 
    at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:378) 
    at XMLHttpRequest.js:482 
    at RCTDeviceEventEmitter.emit (EventEmitter.js:181) 
    at MessageQueue.__callFunction (MessageQueue.js:236) 
    at MessageQueue.js:108 
    at guard (MessageQueue.js:46) 
+0

попробуйте добавить предложение catch, чтобы увидеть ошибку: axios.get ('http://www.testsite.com/pl/ite/callservice.php?action = nearthat & x = -1.61116871892648 & y = 50.1449621509454 & maxct = 100 ') . then (response => console.log (response)). catch (e => console.log (e)); –

+0

@DiogoSgrillo Я сделал это и добавил полную ошибку к вопросу, но я все еще не понимаю, в чем проблема. – jbssm

+0

Отформатированный формат официальных документов. Можете ли вы попробовать этот формат? .then (функция (ответ) { console.log (response); }) –

ответ

0

Это вопрос CORS.

Если вы являетесь владельцем сценария (на сервере), вы можете добавить заголовок соответствующего заголовка для решения этой проблемы. В PHP будет что-то вроде этого:

<?php header("Access-Control-Allow-Origin: *");

Для целей тестирования (или, если у вас нет доступа к серверу), вы можете установить chrome extension, который отключает ограничения между доменами.

+0

Но это работает, когда я запрашиваю URL-адрес в браузере (Chrome или любой другой, который я пробовал), то, что он не работает, находится в Javascript/React Native – jbssm

+0

Большинство браузеров имеют ограничения безопасности при обработке запросов Ajax.Вы можете отключить эти ограничения в Chrome с помощью плагина, который я предложил. –

1

jbssm, Кажется, вы работаете над IOS. Можете ли вы проверить настройки безопасности в приложении в настройках проекта с помощью Xcode.

Xcode отключает http-соединение по умолчанию, только обеспечивает безопасное соединение. Вы должны добавить «Разрешить суровые нагрузки» в свои настройки проекта.