如何将javascript请求转换为curl

时间:2018-05-11 18:08:47

标签: javascript curl

我在javascript(节点)处有以下代码,并希望将其转换为curl

const body = {
  'Email': "my email:)",
  'EncryptedPasswd': "my encrypted pass",
  'service': 'androidmarket',
  'accountType': 'HOSTED_OR_GOOGLE',
  'has_permission': '1',
  'source': 'android',
  'androidId': "my id",
  'app': 'com.android.vending',
  'device_country': 'us',
  'operatorCountry': 'us',
  'lang': 'en_US',
  'sdk_version': '23'
};

return _request.postAsync({url: _opts.loginUrl, gzip: true, json: false, form: body})
  .spread(function (res, body) {
    if (res.statusCode !== 200) {
      throw new LoginError(body);
    }
    assert(res.statusCode === 200, 'login failed');
    assert(res.headers['content-type'] === 'text/plain; charset=utf-8', 'utf8 string body');
    const response = responseToObj(body);
    if (!response || !response.auth) {
      throw new Error('expected auth in server response');
    }

    // set the auth token member to the response token.
    _opts.authToken = response.auth;
    return response.auth;
  });

我的curl请求:

curl --data "Email==myemail&EncryptedPasswd=mypass&has_permission=1&accountType=HOSTED_OR_GOOGLE&add_account=1&service=androidmarket&has_permission=1&source=android&device_country=us&lang=en_US&sdk_version=23&androidId=3c816e5b68106eb2&app=com.android.vending&operatorCountry=us" https://android.clients.google.com/auth

我多次尝试运行javascript脚本并且始终有效。我看不出这些脚本之间的任何区别,但js代码有效,curl不是

2 个答案:

答案 0 :(得分:1)

根据您的JavaScript,这是.x请求,您尚未在curl命令中指定。

paste2 <- function(x, y, sep = ".") paste(x, y, sep = sep)

library(purrr)
letters[1:4] %>%
  {map_chr(
    .x = 2:length(.),
    .f = function(index) reduce2(
      .x = .[1:index],
      .y = c("-", ".", "-")[1:(index - 1)],
      .f = paste2
    )
  )}
#> [1] "a-b"     "a-b.c"   "a-b.c-d"

以下是语法:

POST

答案 1 :(得分:0)

为了便于阅读,我将每个字段放在一个单独的行上。你需要一个斜杠来分隔每一行。

在问题中,您有两个相同的电子邮件标记(Email==myemail)。可能是吗?还要将这些字段分开,并将它们放在与JavaScript字段相同的顺序中,这可以帮助您比较两个列表并确保它们确实相等。

curl --data "Email=myemail" \
     --data "EncryptedPasswd=mypass" \
     --data "has_permission=1" \
     --data "accountType=HOSTED_OR_GOOGLE" \
     --data "add_account=1" \
     --data "service=androidmarket" \
     --data "has_permission=1" \
     --data "source=android" \
     --data "device_country=us" \
     --data "lang=en_US" \
     --data "sdk_version=23" \
     --data "androidId=3c816e5b68106eb2" \
     --data "app=com.android.vending" \
     --data "operatorCountry=us" \
         https://android.clients.google.com/auth