Я интегрирую Perl с отчетами Salesforce. Я пытаюсь подключить Perl-скрипт через стандартный REST API (/ 00O93000009NpOy? Export = 1 & enc = UTF-8 & xf = csv) отчета Salesforce и получения кода ответа 200. На высоком уровне мне нужно загрузить отчет Salesforce в Excel формат с использованием Perl-скрипта.Интеграция Perl REST с Salesforce Report
Пожалуйста, смотрите в мой код:
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
use WWW::Salesforce;
use REST::Client;
# Authenticate first via SOAP interface to get a session ID:
my $sforce = eval { WWW::Salesforce->login(
'username' => "USER_NAME",
'password' => "PASSWORD"); };
die "Could not login to SFDC: [email protected]" if [email protected];
# Get the session ID:
my $hdr = $sforce->get_session_header();
my $sid = ${$hdr->{_value}->[0]}->{_value}->[0];
my $host = 'https://ap1.salesforce.com';
my $client = REST::Client->new(host => $host);
# Get ALL incidents
$client->GET('/00O93000009NpOy?export=1&enc=UTF-8&xf=csv',
{'Authorization' => "OAuth $sid",
'Accept' => 'application/json'});
print 'Response: ' . $client->responseContent() . "\n";
print 'Response status: ' . $client->responseCode() . "\n";
foreach ($client->responseHeaders()) {
print 'Header: ' . $_ . '=' . $client->responseHeader($_) . "\n";
}
И когда я запустил этот код Perl через командную строку, то я получил ответ, как это:
C:\Users\Documents>perl TEST.pl`enter code here`
Response:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or
g/TR/html4/loose.dtd">
<html>
<head>
<meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<script>
if (this.SfdcApp && this.SfdcApp.projectOneNavigator) { SfdcApp.projectOneNaviga
tor.handleRedirect('https://login.salesforce.com/?ec=302&startURL=%2F00O90000009
NhOy%3Fenc%3DUTF-8%26export%3D1%26xf%3Dcsv'); } else
if (window.location.replace){
window.location.replace('https://login.salesforce.com/?ec=302&startURL=%2F00O900
00009NhOy%3Fenc%3DUTF-8%26export%3D1%26xf%3Dcsv');
} else {;
window.location.href ='https://login.salesforce.com/?ec=302&startURL=%2F00O90000
009NhOy%3Fenc%3DUTF-8%26export%3D1%26xf%3Dcsv';
}
</script>
</head>
</html>
<!-- Body events -->
<script type="text/javascript">function bodyOnLoad(){if(window.PreferenceBits){w
indow.PreferenceBits.prototype.csrfToken="null";};}function bodyOnBeforeUnload()
{}function bodyOnFocus(){}function bodyOnUnload(){}</script>
</body>
</html>
<!--
................................................................................
...................
................................................................................
...................
................................................................................
...................
................................................................................
...................
-->
Response status: 200
Header: Connection=close
Header: Date=Tue, 29 Nov 2016 10:05:43 GMT
Header: Pragma=NO-CACHE
Header: Content-Type=text/html;charset=UTF-8
Header: Client-Date=Tue, 29 Nov 2016 10:05:43 GMT
Header: Client-Peer=182.50.78.41:443
Header: Client-Response-Num=1
Header: Client-SSL-Cert-Issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Ne
twork/CN=Symantec Class 3 Secure Server CA - G4
Header: Client-SSL-Cert-Subject=/C=US/ST=California/L=San Francisco/O=Salesforce
.com, Inc/OU=Applications/CN=*.salesforce.com
Header: Client-SSL-Cipher=ECDHE-RSA-AES256-GCM-SHA384
Header: Client-SSL-Socket-Class=IO::Socket::SSL
Header: Set-Cookie=BrowserId=UGPsAKnYTgWN3JcU4kcKxg;Path=/;Domain=.salesforce.co
m;Expires=Sat, 28-Jan-2017 10:05:43 GMT
Хотя ответ должен быть в формате JSON, а не абсурдным. Я пробовал работать с верстаком и получаю ответ в формате JSON, который хорош. Ответ не является правильным.
Добро пожаловать в Переполнение стека. Выделение синтаксиса в вашем сообщении немного нарушено. Пожалуйста, отредактируйте вопрос и посмотрите. – simbabque
Похоже, что вам нужно войти в систему. Эта страница, похоже, перенаправляется на _login.salesforce.com_. Возможно, что 'eval' в начале вашего кода не делает то, что вы думаете. Вы посмотрели содержимое 'sforce'? – simbabque