Вызов внутреннего URL-адреса Netsuite

Я пишу сценарий и хочу прочитать содержимое из запроса URL.

header['Content-Type']='text/xml';
var apiURL='https://system.na2.netsuite.com/app/setup/upload/csv/csvstatus.nl?XML=T';
var response=https.get({
  url:apiURL,
  headers:header,
});
var newSFID=response.body;
log.debug("XML",a);

Но он не читает содержимое, а вместо этого переходит на страницу входа и заходит на начальную страницу входа. есть идеи как читать?


person Arindam    schedule 24.10.2017    source источник


Ответы (2)


Это вполне выполнимо. Проблема в том, что вы не предоставляете никаких разрешений. Вам нужно будет указать заголовок авторизации, если вы не хотите получать страницу входа. Я обновил ваш код ниже (и протестировал без проблем, за исключением того, что я не верю, что эта страница будет отображаться как XML?). Просто добавьте правильную информацию для аутентификации.

require(['N/record','N/https'],function(record,https){
  function test(){
    var header=[];
    header['Content-Type']='text/xml';
    header['Authorization']='NLAuth nlauth_account=NETSUITEACCOUNT,nlauth_email=LOGINEMAIL,nlauth_signature="LOGINPASSWORD",nlauth_role=3'
var apiURL='https://system.na2.netsuite.com/app/setup/upload/csv/csvstatus.nl?xml=T';
    var response=https.get({
        url:apiURL,
        headers:header
    });
    log.debug('response.body',JSON.stringify(response.body));
  }
  test();
});
person w3bguy    schedule 25.10.2017
comment
Это дало вам ответ, в котором вы нуждались? - person w3bguy; 26.10.2017
comment
Это может работать, но я пытаюсь сказать, что то, как это нужно сделать, не поддерживается NS. Если NS обнаружит эксплойт, они могут удалить его, и ваше решение не будет работать. Кроме того, вы можете нарушить Условия и соглашение NS, где-то там говорится, что вы можете использовать функции только на основе их предложений. - person vVinceth; 27.10.2017
comment
Этот xml=t на самом деле предназначен только для внутреннего использования NS и не должен быть общедоступным. Но они не могут запретить бывшему сотруднику NS использовать и распространять информацию. Если вы предлагаете свое решение клиенту как внутреннюю разработку, это должно быть хорошо, потому что вы можете исправить это (если возможно), но если нет, то это нехорошо для клиента, если это перестанет работать, потому что NS удалил эксплойт. Это вопрос «используйте на свой страх и риск», как мы всегда говорим клиентам, разрабатывающим вещи, не поддерживаемые NS (когда я еще работал в поддержке). - person vVinceth; 27.10.2017
comment
xml=T предназначен не только для внутреннего использования сотрудниками NetSuite...? В этом году на SuiteWorld даже было выступление, в котором они упомянули об использовании его для упрощения захвата данных записи со страницы (аналогично тому, что делает Arindam). И это точно не подвиг. Эксплойт - это нечто совершенно иное, даже не то, что вы неправильно указываете xml=T. ;) - person w3bguy; 27.10.2017
comment
Когда я работал в службе поддержки, нам не разрешалось делиться xml=T, а это примерно 2010–2013 годы. Хорошо, что они сделали xml=t доступным. - person vVinceth; 30.10.2017

То, что вы делаете, не поддерживается в NetSuite. APIURL не является конечной точкой NetSuite, которую можно просто вызвать из-за пределов NetSuite и получить ответ.

person vVinceth    schedule 25.10.2017
comment
Я пытаюсь вызвать apiURL из внутреннего ScriptLet. Вы думаете, что это может быть достигнуто каким-либо другим способом... - person Arindam; 26.10.2017