Here are text versions to try and get around the attachment blocking.
Regards,
Andrew Goodall
Software Engineer 2 | Development Services | jcpenney . www.jcp.com
<http://www.jcp.com/>
________________________________
From: Andrew C Goodall
Sent: Wednesday, March 14, 2012 12:09 PM
To: '[email protected]'
Subject: RE: perl soap lite examples
Good grief - got blocked again.
Ok - go here if you're interested:
https://communities.bmc.com/communities/docs/DOC-18743
Regards,
Andrew Goodall
Software Engineer 2 | Development Services | jcpenney . www.jcp.com
<http://www.jcp.com/> | 972.431.1518
________________________________
From: Andrew C Goodall
Sent: Wednesday, March 14, 2012 12:04 PM
To: '[email protected]'
Subject: RE: perl soap lite examples
Attempting this again as a zip attachment.
For anymore who is interested these are some Perl SOAP::Lite examples
for opcreate, opset, opget, and opgetlist.
I haven't used these in a while, but remember it took me a while to
figure out how to consume the remedy web services in perl - so thought
these may help someone else out.
http://www.soaplite.com/
FYI- I used Activestate Komodo Edit on windows -
http://www.activestate.com/komodo-edit/downloads
Regards,
Andrew Goodall
Software Engineer 2 | Development Services | jcpenney . www.jcp.com
<http://www.jcp.com/>
<font face="monospace"size="-3"><br>The information transmitted is intended
only for the person or entity to which it is addressed and <br>may contain
confidential and/or privileged material. If the reader of this message is not
the intended<br>recipient, you are hereby notified that your access is
unauthorized, and any review, dissemination,<br>distribution or copying of this
message including any attachments is strictly prohibited. If you are not<br>the
intended recipient, please contact the sender and delete the material from any
computer.<br>
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
#!/apps/remdev/ars/ars/perl -w
#
# Test Remedy WebService
#
use Env;
use SOAP::Lite;
#trace=>'all';
#+trace => [ transport => \&SOAP_log ];
sub SOAP_log {
# Assume Transport Logging Only
my ($in) = @_;
my $doubleLF = chr(10).chr(10);
my $singleLF = chr(10);
my($sName,$sVal) = split(/=/,$in,2);
while( my ($k, $v) = each %$in ) {
if ( $k eq "_content" ) {
$sVal = "$sName\n".$v;
$sVal =~ s/$doubleLF/$singleLF/g;
write_log ( $sVal );
}
}
}
sub write_log {
# my $arLogFile=$ENV{'ARCONFIGDIR'}."/tmp/fred_Remedy_SOAP.log";
my $arLogFile="Remedy_SOAP.log";
my($message) = @_;
$message="$message";
chop(my $date = `date +'%a %b %e %Y %T'`);
my $messagehead = "<PERL> <TID: 0> <RPC ID: 0> <Queue: 0> <Client-RPC: 0>
<USER: perl> /* $date */ ";
warn "Could not open logfile: $arLogFile\n" unless (open (LOGFILE,
">>$arLogFile"));
print LOGFILE "$messagehead $message\n";
warn "Could not close logfile: $arLogFile\n" unless (close (LOGFILE));
}
my $USERNAME = "username-goes-here";
my $PASSWORD = "password-goes-here";
my $arServer = "ars-server-goes-here";
my $arwebServer = "midtier-server-goes-here";
my $ServiceName = "webservice-name-goes-here";
my $RemedyURL =
"http://".$arwebServer."/arsys/services/ARService?server=".$arServer."&webService=".$ServiceName;
my $RemedyNS = "urn:".$ServiceName;
my $RecordID = "INC000001294141";
my $newline = "\n"; #newline is not working???
my $doubleLF = chr(10).chr(10); #this does not work???
my $Work_Log = "This is an update 2 to the worklog from:".$newline."-this is a
test.";
#my $UpdateDate = "2006-11-17T20:35:11";
#my $UpdateDate = localtime(time);
my $soap = SOAP::Lite
-> proxy($RemedyURL)
-> ns($RemedyNS,'ns1')
-> autotype(0)
-> readable(1);
my $som = $soap->OpSet(
SOAP::Header->name('AuthenticationInfo' => \SOAP::Header->value(
SOAP::Header->name('userName' => $USERNAME),
SOAP::Header->name('password' => $PASSWORD) )),
SOAP::Data->name('Incident_Number' => $RecordID ),
SOAP::Data->name('Work_Log' => $Work_Log ));
if ($som->fault){
print "Fault :", $som->faultstring, "\n";
print "Faultcode :",$som->faultcode, "\n";
print "Faultdetail :", %{$som->faultdetail}, "\n";
}else{
print "Update successful.";
}
#print $som;
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
#!/apps/remdev/ars/ars/perl -w
#
# Test Remedy WebService
#
use Env;
use SOAP::Lite;
#trace=>'all';
#+trace => [ transport => \&SOAP_log ];
sub SOAP_log {
# Assume Transport Logging Only
my ($in) = @_;
my $doubleLF = chr(10).chr(10);
my $singleLF = chr(10);
my($sName,$sVal) = split(/=/,$in,2);
while( my ($k, $v) = each %$in ) {
if ( $k eq "_content" ) {
$sVal = "$sName\n".$v;
$sVal =~ s/$doubleLF/$singleLF/g;
write_log ( $sVal );
}
}
}
sub write_log {
# my $arLogFile=$ENV{'ARCONFIGDIR'}."/tmp/fred_Remedy_SOAP.log";
my $arLogFile="Remedy_SOAP.log";
my($message) = @_;
$message="$message";
chop(my $date = `date +'%a %b %e %Y %T'`);
my $messagehead = "<PERL> <TID: 0> <RPC ID: 0> <Queue: 0> <Client-RPC: 0>
<USER: perl> /* $date */ ";
warn "Could not open logfile: $arLogFile\n" unless (open (LOGFILE,
">>$arLogFile"));
print LOGFILE "$messagehead $message\n";
warn "Could not close logfile: $arLogFile\n" unless (close (LOGFILE));
}
my $USERNAME = "username-goes-here";
my $PASSWORD = "password-goes-here";
my $arServer = "ars-server-goes-here";
my $arwebServer = "midtier-server-goes-here";
my $ServiceName = "webservice-name-goes-here";
my $RemedyURL =
"http://".$arwebServer."/arsys/services/ARService?server=".$arServer."&webService=".$ServiceName;
my $RemedyNS = "urn:".$ServiceName;
my $Descrip = "Error Detected with...";
my $newline = "\n"; #newline is not working???
my $Work_Log = "This is an update to the worklog from:".$newline."-netcool has
closed this incident.";
#my $UpdateDate = "2006-11-17T20:35:11";
#my $UpdateDate = localtime(time);
my $soap = SOAP::Lite
-> proxy($RemedyURL)
-> ns($RemedyNS,'ns1')
-> autotype(0)
-> readable(1);
my $som = $soap->OpCreate(
SOAP::Header->name('AuthenticationInfo' => \SOAP::Header->value(
SOAP::Header->name('userName' => $USERNAME),
SOAP::Header->name('password' => $PASSWORD) )),
SOAP::Data->name('Entry_Description' => $Descrip ),
SOAP::Data->name('Work_Log' => $Work_Log ));
if ($som->fault){
print "Fault :", $som->faultstring, "\n";
print "Faultcode :",$som->faultcode, "\n";
print "Faultdetail :", %{$som->faultdetail}, "\n";
}else{
foreach my $field ($som->valueof('//OpCreateResponse')) {
print "-----------------------------------------\n";
# print description for every field then the returned value
foreach my $fieldname (sort keys %{$field}) {
# use the if statment to supress fields with empty values
#if ($field->{$fieldname}){
print $fieldname, ": '",
$field->{$fieldname}, "'\n";
#}
}
}
print "Create successful.\n";
}
#print $som;
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
#!/apps/remdev/ars/ars/perl -w
#
# Test Remedy WebService
#
use Env;
use SOAP::Lite;
#trace=>'all';
#+trace => [ transport => \&SOAP_log ];
sub SOAP_log {
# Assume Transport Logging Only
my ($in) = @_;
my $doubleLF = chr(10).chr(10);
my $singleLF = chr(10);
my($sName,$sVal) = split(/=/,$in,2);
while( my ($k, $v) = each %$in ) {
if ( $k eq "_content" ) {
$sVal = "$sName\n".$v;
$sVal =~ s/$doubleLF/$singleLF/g;
write_log ( $sVal );
}
}
}
sub write_log {
# my $arLogFile=$ENV{'ARCONFIGDIR'}."/tmp/fred_Remedy_SOAP.log";
my $arLogFile="Remedy_SOAP.log";
my($message) = @_;
$message="$message";
chop(my $date = `date +'%a %b %e %Y %T'`);
my $messagehead = "<PERL> <TID: 0> <RPC ID: 0> <Queue: 0> <Client-RPC: 0>
<USER: perl> /* $date */ ";
warn "Could not open logfile: $arLogFile\n" unless (open (LOGFILE,
">>$arLogFile"));
print LOGFILE "$messagehead $message\n";
warn "Could not close logfile: $arLogFile\n" unless (close (LOGFILE));
}
my $USERNAME = "username-goes-here";
my $PASSWORD = "password-goes-here";
my $arServer = "ars-server-goes-here";
my $arwebServer = "midtier-server-goes-here";
my $ServiceName = "webservice-name-goes-here";
my $RemedyURL =
"http://".$arwebServer."/arsys/services/ARService?server=".$arServer."&webService=".$ServiceName;
my $RemedyNS = "urn:".$ServiceName;
my $RecordID = "INC000001294141";
my $StatusTxt = "Success";
my $UpdateDate = "2006-11-17T20:35:11";
my $soap = SOAP::Lite
-> proxy($RemedyURL)
-> ns($RemedyNS,'ns1')
-> autotype(0)
-> readable(1);
my $som = $soap->OpGet(
SOAP::Header->name('AuthenticationInfo' => \SOAP::Header->value(
SOAP::Header->name('userName' => $USERNAME),
SOAP::Header->name('password' => $PASSWORD) )),
SOAP::Data->name('Incident_Number' => $RecordID ));
# check to see if we got a fault back. If we did then print it. If we
#did not then get the fields that we want.
use Encode;
if ($som->fault){
print "Fault :", $som->faultstring, "\n";
print "Faultcode :",$som->faultcode, "\n";
print "Faultdetail :", %{$som->faultdetail}, "\n";
}else{
# print all fields returned from the OpGet method
foreach my $field ($som->valueof('//OpGetResponse')) {
print "-----------------------------------------\n";
# print description for every field then the returned value
foreach my $fieldname (sort keys %{$field}) {
# use the if statment to supress fields with empty values
#if ($field->{$fieldname}){
print decode_utf8($fieldname), ": '",
$field->{decode_utf8($fieldname)}, "'\n";
#}
}
}
}
print "\n";
print "\n";
print "Vendor Group ID: (",$som->valueof('//OpGetResponse/Vendor_Group_ID'),
")\n";
#print $som;
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
#!/apps/remdev/ars/ars/perl -w
#
# Test Remedy WebService
#
use Env;
use Win32;
use SOAP::Lite;
#trace=>'all';
#+trace => [ transport => \&SOAP_log ];
sub SOAP_log {
# Assume Transport Logging Only
my ($in) = @_;
my $doubleLF = chr(10).chr(10);
my $singleLF = chr(10);
my($sName,$sVal) = split(/=/,$in,2);
while( my ($k, $v) = each %$in ) {
if ( $k eq "_content" ) {
$sVal = "$sName\n".$v;
$sVal =~ s/$doubleLF/$singleLF/g;
write_log ( $sVal );
}
}
}
sub write_log {
# my $arLogFile=$ENV{'ARCONFIGDIR'}."/tmp/fred_Remedy_SOAP.log";
my $arLogFile="Remedy_SOAP.log";
my($message) = @_;
$message="$message";
chop(my $date = `date +'%a %b %e %Y %T'`);
my $messagehead = "<PERL> <TID: 0> <RPC ID: 0> <Queue: 0> <Client-RPC: 0>
<USER: perl> /* $date */ ";
warn "Could not open logfile: $arLogFile\n" unless (open (LOGFILE,
">>$arLogFile"));
print LOGFILE "$messagehead $message\n";
warn "Could not close logfile: $arLogFile\n" unless (close (LOGFILE));
}
sub get_assignedtome {
my $USERNAME = "username-goes-here";
my $PASSWORD = "password-goes-here";
my $arServer = "ars-server-goes-here";
my $arwebServer = "midtier-server-goes-here";
my $ServiceName = "webservice-name-goes-here";
my $RemedyURL =
"http://".$arwebServer."/arsys/services/ARService?server=".$arServer."&webService=".$ServiceName;
my $RemedyNS = "urn:".$ServiceName;
my $Win32loginname = Win32::LoginName();
#print "'Assignee Login ID' = \"$Win32loginname\"";
#my $qualification = "'Incident Number' = \"INC000001294141\"";
my $qualification = "'Assignee Login ID' = \"Demo\"";
#my $qualification = "'Assignee Login ID' = \"$Win32loginname\"";
#my $qualification = "'Assignee' = \"Bob User\"";
#my $qualification = "'7' = \"Resolved\"";
#my $qualification = "1=1";
my $soap = SOAP::Lite
-> proxy($RemedyURL)
-> ns($RemedyNS,'ns1')
-> autotype(0)
-> readable(1);
my $som = $soap->HelpDesk_QueryList_Service(
#my $som = $soap->OpGetList(
SOAP::Header->name('AuthenticationInfo' => \SOAP::Header->value(
SOAP::Header->name('userName' => $USERNAME),
SOAP::Header->name('password' => $PASSWORD) )),
SOAP::Data->name('Qualification' => $qualification ));
# check to see if we got a fault back. If we did then print it. If we
#did not then get the fields that we want.
if ($som->fault){
print "Fault :", $som->faultstring, "\n";
print "Faultcode :",$som->faultcode, "\n";
print "Faultdetail :", %{$som->faultdetail}, "\n";
}else{
# add this to get a full array of the results
my @params = $som->paramsout;
#$output = "sdsdsd";
$rowcounter = 0;
# Process each of the records
# foreach $entry
($som->valueof('//HelpDesk_QueryList_ServiceResponse/getListValues')){
# foreach $field (keys (%{$entry})){
# print $field, " : ", ${%{$entry}}{$field},"\n";
# }
# print "\n";
# $rowcounter = $rowcounter + 1;
#}
my $results = "";
#foreach my $row(@params) {
foreach my $row
($som->valueof('//HelpDesk_QueryList_ServiceResponse/getListValues')){
$results =
$results."<tr><td>".$row->{'Incident_Number'}."</td><td>".$row->{'Status'}."</td><td>".$row->{'Summary'}."</td><td>".$row->{'Priority'}."</td></tr>";
#print("<tr><td>".$row->{'Incident_Number'}."</td><td>");
#print($row->{'Status'}."</td><td>");
#print($row->{'Summary'}."</td><td>");
#print($row->{'Priority'}."</td></tr>");
#print($row->{'Assignee'}."\n");
#$output =
($row->{'Incident_Number'}."</td><td>".{'Summary'}."</td><td>".{'Priority'}."</td></tr>");
#$output = $output.($row->{'Incident_Number'}."</td><td>");
#print($row->{'Status7'}."\n");
#print($row->{'Create_Date'}."\n")
$rowcounter = $rowcounter + 1;
}
return $results;
}
} #end of get_assignedtome
$output = get_assignedtome();
#print Win32::LoginName(), "\n";
#print "Record count = ",$rowcounter;
print "Content-type: text/html\n\n";
print <<ENDHTML;
<html>
<head>
</style>
<title>Remedy Incidents - Assigned to Me</title>
</head>
<BODY style="align:center">
<h3>Remedy Incidents - Assigned to Me</h3>
<table>
<tr>
<td>Incident #</td>
<td>Status</td>
<td>Summary</td>
<td>Priority</td>
</tr>
$output
</table>
<br>
</BODY>
</html>
ENDHTML
;
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"