Конвертировать команду curl в javascript
Я пытаюсь преобразовать команду в curl в javascript. Я искал в Google, но не нашел решения или объяснения, которые могли бы мне помочь. Команда curl такая:
curl https://www.google.com/accounts/ClientLogin
--data-urlencode Email=mail@example.com
--data-urlencode Passwd=*******
-d accountType=GOOGLE
-d source=Google-cURL-Example
-d service=lh2
С этим я хочу преобразовать команду в функцию $.ajax(). Моя проблема в том, что я не знаю, что мне нужно добавить в функцию setHeader для параметров, присутствующих в команде curl.
$.ajax({
url: "https://www.google.com/accounts/ClientLogin",
type: "GET",
success: function(data) { alert('hello!' + data); },
error: function(html) { alert(html); },
beforeSend: setHeader
});
function setHeader(xhr) {
//
}
2 ответа
Решение
По умолчанию $.ajax()
преобразует данные в строку запроса, если она еще не является строкой, поскольку данные здесь являются объектом, изменяют данные на строку и затем устанавливают processData: false
, чтобы он не конвертировался в строку запроса.
$.ajax({
url: "https://www.google.com/accounts/ClientLogin",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password"));
},
type: 'POST',
dataType: 'json',
contentType: 'application/json',
processData: false,
data: '{"foo":"bar"}',
success: function (data) {
alert(JSON.stringify(data));
},
error: function(){
alert("Cannot get data");
}
});
Если вы можете использоватьfetch()
вместо$.ajax
, вы можете использовать curlconverter.com/javascript/ , и он преобразует вашу команду в
fetch('https://www.google.com/accounts/ClientLogin', {
method: 'POST',
body: new URLSearchParams({
'accountType': 'GOOGLE',
'source': 'Google-cURL-Example',
'service': 'lh2'
})
});