Schrift
[thread]11995[/thread]

Umgang mit SOAP-response

Leser: 2


<< >> 3 Einträge, 1 Seite
subTH
 2008-06-09 14:32
#110900 #110900
User since
2008-06-09
1 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich habe eine allgemeine Frage zum Thema SOAP. Ich schicke ein SOAP-request an einen Webservice und bekomme als response natürlich auch eine Nachricht in Form eines SOAP-XMLs.

Gibt es eine komfortable Lösung, einfach an die Elemente STATUS, STATUSTEXT , RETURN_CODE und WORKITEM_ID zu gelangen oder muss ich den Umweg über XML::Simple gehen?


Ein Beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sub start_workflow {
my ($self, $wf_task, $wf_user) = @_;

my $userAgent = LWP::UserAgent->new(agent => 'perl post');
my $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">
<SOAP-ENV:Body>
<ns1:SAP_WAPI_START_WORKFLOW xmlns:ns1=\"urn:sap-com:document:sap:rfc:functions\">
<TASK>$wf_task</TASK>
<USER>$wf_user</USER>
</ns1:SAP_WAPI_START_WORKFLOW>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>";

my $response = $userAgent->request( POST $self->{__service},
Content_Type => 'text/xml',
Content => $xml,
Authorization => $self->{__authorization}, );

return $response->content;
}



Antwort:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ns1:SAP_WAPI_START_WORKFLOW.Response xmlns:ns1="urn:sap-com:document:sap:rfc:functions">
<NEW_STATUS>
<STATUS>STARTED</STATUS>
<STATUSTEXT>in Arbeit</STATUSTEXT>
</NEW_STATUS>
<RETURN_CODE>0</RETURN_CODE>
<WORKITEM_ID>000000005061</WORKITEM_ID>
</ns1:SAP_WAPI_START_WORKFLOW.Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
murphy
 2008-06-09 22:24
#110919 #110919
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wie wäre es denn mit der Verwendung eines dafür gedachten Modules wie CPAN:SOAP::Lite. Da sollte das ganze dann etwas einfacher aussehen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use SOAP::Lite;
use SOAP::Data qw/name/;

my $soap = new SOAP::Lite(
  uri => 'urn:sap-com:document:sap:rfc:functions',
  proxy => 'http://wherever.it.lives.example'
);

my $som = $soap->SAP_WAPI_START_WORKFLOW(
  name(TASK => $wf_task),
  name(USER => $wf_user)
);
die $som->faultdetail if ($som->fault);

say $som->result;
When C++ is your hammer, every problem looks like your thumb.
GwenDragon
 2008-06-10 13:00
#110930 #110930
User since
2005-01-17
14540 Artikel
Admin1
[Homepage]
user image
Ich empfehle als Lösungsmittel CPAN, dann haben sich die Probleme mit SOAP gewaschen ;)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

<< >> 3 Einträge, 1 Seite



View all threads created 2008-06-09 14:32.