将curl命令转换为JavaScript

ioekq8ef  于 2022-11-13  发布在  Java
关注(0)|答案(2)|浏览(351)

我正在尝试将curl命令转换为JavaScript:

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) {
    // ?
}
gg0vcinb

gg0vcinb1#

默认情况下$.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");
 }
});
wgeznvg7

wgeznvg72#

如果可以使用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'
    })
});

相关问题