2017-04-26 5 views
-1

SoftLayer::API::SOAPを使用してglobal_ip_idを取得しようとしています。私はSoftlayer APIからグローバルIPを取得する

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

をしようとすると、しかし、私はエラーを取得する:

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

+0

[ようやく]へようこそ!このサイトでは、自分でコードを書くことができます**。 ** [もっと研究をして](// meta.stackoverflow.com/questions/261592)**あなたが問題を抱えていると、あなたが試みたものを投稿することができます** (** stackoverflow.com/help/mcve)を提供しています。私は良い質問と[完璧な質問]を読むことをお勧めします(http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。また、[ツアー]を取って** [this](// meta.stackoverflow.com/questions/347937/)**を必ず読んでください。 – Badacadabra

答えて

0

私はあなたが使用しているフレームワークや言語見当がつかないが、私は、これはその間違った使用の問題ですprettry確信しています。

あなたはその応答は、使用している言語やフレームワークに依存しますから応答があるとして、あなたは、データを取得する今、どのようにこの

<?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である必要があり、その呼び出しから取得することをSOAPレスポンスXMLのいくつかの言語では、XMLのタグをナビゲートする必要がありますあなたが取得している現在の問題は、あなたがアクセスしようとしている間違った方法によるものであるため、

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

は、だから私は、あなたがあなたの言語やフレームワークを使用すると、SOAP応答をナビゲートすることを可能にする方法を確認するためにお勧めデータ。あなたはこのようなものを使用する必要がありSOFTLAYERのPerlクライアントを使用している場合、今

:あなたが見ることができるように

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

は、すべてあなたがしている場合にも

を使用しているlenguageとフレームワークに依存しますそのような場合に空でないことを確認する必要がある場合は、結果が原因でエラーが発生する可能性があるPerlを使用してください。詳細はError: Can't use an undefined value as an ARRAY referenceを参照してください。

よろしくお願いいたします。

+0

ネルソン、あなたの答えに感謝します。私はSoftlayerのperlを使用していますが、あなたの例を試しましたが、私はまだ同じエラーがあります: –

+0

私はこの実装に従いましたhttps://serverfault.com/questions/666850/softlayer-haproxy-with-failover –

+0

多分あなたは何も持っていないグローバルIPは結果をダンプし、データがあるかどうかを確認してください "print Dumper($ output-> result);" –

関連する問題