Как конвертировать JavaScript-запрос в curl - PullRequest
0 голосов
/ 11 мая 2018

У меня есть следующий код в 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 голосов
/ 11 мая 2018

Чтобы было легче читать, я бы поместил каждое поле на отдельной строке. Тебе нужна косая черта, чтобы отделить каждую строку.

В вопросе у вас есть два знака равенства для электронного письма (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
0 голосов
/ 11 мая 2018

Согласно вашему JavaScript, это запрос POST, который вы не указали в своей команде curl.

curl \
-X POST \
--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

Вот синтаксис:

curl -X POST -d '&param1=1&param2=2...' URL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...