2016-04-19 4 views
1

У меня есть проблема на моем угловом приложении:Угловой Js Curl -d запроса HTTP

У меня есть Curl запрос, который работает нормально в моем терминале:

curl -d "grant_type=password&client_id=IDXXXXXX&client_secret=SECRET&username=USERNAME&password=PASSWORD" https://MYINSTANCE/oauth_token.do 

Теперь я хочу, чтобы использовать его с угловым JS.

вот что я пробовал:

var getDatas = { 
    grant_type: "password", 
    client_id: "ID", 
    client_secret : "PASS", 
    username : "USER", 
    password : "PASSWORD" 
} 

$http({ 
    method: 'GET', 
    url: 'https://MYINSTANCE/oauth_token.do', 
    data : JSON.stringify(getDatas) 
}).then(function successCallback(response) { 
    alert("response : " + response); 
}, function errorCallback(response) { 
    alert("error : " + response); 
}); 

Но служба возвращает мне ошибку.

Я ноб на запросах Curl с угловыми, кто-то может дать мне несколько советов?

Thx много!

С уважением

+0

в локон, вы делаете запрос POST с 'применение/х-WWW-форм-urlencoded' типа содержимого, а не JSON –

+0

привет извините, но я не понимаю ... что я должен делать, если я просто хочу отправить некоторые хорошие параметры на сервер? –

ответ

2

Ваш JS пытается отправить запрос GET с данными в организме. Ваш запрос curl неявно использует POST, когда вы передаете данные с -d. Кроме того, при вызове stringify данные, которые вы отправляете, представляют собой строку JSON вместо стандартного формата POST. Таким образом, чтобы получить ваши JS, чтобы соответствовать вашему локону запроса (если вы также используете JQuery):

$http({ 
    method: 'POST', 
    url: 'https://MYINSTANCE/oauth_token.do', 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    data : $.param(getDatas) 
})... 

Без JQuery ($.param) вы можете написать общую функцию, чтобы превратить объект в строку POST данных:

var formData = new FormData(); 
formData.append("grant_type", "password"); 
formData.append("client_id", "ID"); 
... 
$http({ 
    ... 
    data: formData 
})... 

Или построить строку POST непосредственно:

data: "grant_type=password&client_id=" + client_id + "&secret=" ... 
+0

Благодарим вас за ответ, но сервер по-прежнему возвращает мне ошибку с этой конфигурацией. –

+0

@HadrienDelphin Забыл нам нужно преобразовать объект данных в формат параметров POST самостоятельно. См. Мое редактирование. –

+0

Хорошо, теперь у меня есть что-то странное, на консоли (я использую проверку chrome), консоль возвращает мне ошибку 404 на url, которую я пытаюсь достичь. я уверен, что он работает, когда я копирую его на хром, у меня есть хорошая информация ... я чувствую себя немного потерянным прямо сейчас ... –