2017-04-26 4 views
-1

Ich versuche, die global_ip_id unter Verwendung der SoftLayer::API::SOAP zu erhalten. Aber wenn ich versucheAbrufen der globalen IP von der Softlayer-API

$global_ip_id = $client->getGlobalIpRecords()->result->[0]->{id}; 

ich den Fehler:

Can't use an undefined value as an ARRAY reference at /usr/bin/reroute_global line 19

+0

Willkommen bei [so]! Auf dieser Seite wird von Ihnen erwartet, dass Sie versuchen, den Code selbst zu schreiben **. Nach ** [weitere Recherchen durchführen] (// meta.stackoverflow.com/questions/261592)** Wenn du ein Problem hast, kannst du ** alles posten, was du versucht hast ** mit einer ** klaren Erklärung dessen, was isn ' t funktioniert ** und liefert ein [** minimales, vollständiges und verifizierbares Beispiel **] (// stackoverflow.com/help/mcve). Ich schlage vor, eine gute Frage und die perfekte Frage zu lesen (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). Achten Sie auch darauf, die [Tour] zu nehmen und ** [this] (// meta.stackoverflow.com/questions/347937/)** zu lesen. – Badacadabra

Antwort

0

Ich habe keine Ahnung, was Rahmen oder Sprache, die Sie verwenden, aber ich bin prettry sicher, dass dies ein Problem mit dem falschen Gebrauch davon .

Die SOAP-Antwort, dass Sie von diesem Anruf bekommen sollte nun wie folgt

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.service.softlayer.com/soap/v3.1/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Header> 
    <ns1:totalItems> 
     <amount>7</amount> 
    </ns1:totalItems> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
    <ns1:getGlobalIpRecordsResponse> 
     <getGlobalIpRecordsReturn SOAP-ENC:arrayType="ns1:SoftLayer_Network_Subnet_IpAddress_Global[7]" xsi:type="ns1:SoftLayer_Network_Subnet_IpAddress_GlobalArray"> 
     <item xsi:type="ns1:SoftLayer_Network_Subnet_IpAddress_Global"> 
      <description xsi:nil="true"/> 
      <destinationIpAddressId xsi:nil="true"/> 
      <id xsi:type="xsd:int">11111</id> 
      <ipAddressId xsi:type="xsd:int">22222</ipAddressId> 
      <typeId xsi:type="xsd:int">1</typeId> 
     </item> 
     </getGlobalIpRecordsReturn> 
    </ns1:getGlobalIpRecordsResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

somethign sein, wie Sie die Daten erhalten von der Antwort auf die Sprache oder Rahmen ab, die Sie verwenden, wie die Antwort a XML in einigen Sprachen müssen Sie durch die Tags des XML z. B. navigieren So

result->{Body}->{getGlobalIpRecordsResponse}->{getGlobalIpRecordsReturn }->[0]->{id} 

Ich empfehle Sie sicherstellen, wie Sie Ihre Sprache oder Rahmen, um Sie über die SOAP-Antwort navigieren können, da zur Zeit das Problem, das Sie bekommen, wegen der falschen Art und Weise ist, dass Sie versuchen, die für den Zugriff auf Daten.

Nun, wenn Sie die Softlayer Perl-Client verwenden, sollten Sie etwas wie folgt verwenden:

my $client = SoftLayer::API::SOAP->new('SoftLayer_Account', undef, $api_username, $api_key); 
my $output = $client->getGlobalIpRecords(); 
print $output->result->[0]->{'id'}; 

Wie Sie sehen können hängt alles davon ab, welche lenguage und Rahmen Sie verwenden

auch, falls Sie Wenn Sie Perl verwenden, dass der Fehler darauf zurückzuführen ist, dass das Ergebnis leer ist, müssen Sie in diesem Fall sicherstellen, dass dies nicht leer ist. Weitere Informationen finden Sie unter Error: Can't use an undefined value as an ARRAY reference.

Grüße

+0

Hallo Nelson, danke für deine Antwort. Ich benutze die Softlayer Perl, ich versuchte Ihr Beispiel, aber ich habe immer noch den gleichen Fehler: –

+0

Ich folgte dieser Implementierung https://serverfault.com/questions/666850/softlayer-haproxy-with-failover –

+0

vielleicht haben Sie keine globale IP versuchen, das Ergebnis auszugeben und sehen, ob es Daten "print Dumper ($ output-> result);" –

Verwandte Themen