2016-03-31 1 views
0

Ich bin sehr, sehr neu zu allen SOAP/WSDL-Dings, also muss ich etwas Grundlegendes oder nicht die richtigen technischen Begriffe eingeben. Bitte entschuldigen Sie, wenn das der Fall ist.So ermitteln Sie das korrekte Format der Eingabeparameter einer WSDL-Operation

Ich wurde von einem Kollegen eine WSDL-URL zur Verfügung gestellt, und ich muss diesen Webservice mit der nuSOAP-Bibliothek aufrufen.

Er gab mir auch eine XML - und ich habe keine Ahnung, was mit ihm

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://oracle.com/determinations/server/12.2.1/rulebase/assess/types"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <typ:assess-request> 
     <typ:global-instance> 
      <!--Zero or more repetitions:--> 
      <typ:attribute id="transaction_Amount" outcome-style="value-only"/> 
      <typ:attribute id="line_Items" outcome-style="value-only"/> 
      <typ:attribute id="requred_Documents" outcome-style="value-only"/> 
      <typ:attribute id="transaction_Type"> 
       <!--You have a CHOICE of the next 8 items at this level--> 
       <typ:text-val>Address Change</typ:text-val> 
      </typ:attribute> 
      <!--Zero or more repetitions:--> 

     </typ:global-instance> 
     </typ:assess-request> 
    </soapenv:Body> 
</soapenv:Envelope> 

Nach der Untersuchung für eine Weile zu tun, fand ich, dass es mit „Operation“ etwas zu tun und Eingabeparameter erhalten hat . So baue ich ein Stück Code auf, die etwa wie folgt aussieht:

$client = new nusoap_client($url, "wsdl"); 
$error = $client->getError();  
// I do not see the below message so I assume the connection was a success 
if ($error) { 
    echo "<h2>Constructor error</h2><pre>" . $error . "</pre>"; 
} 
$params = array(
    'global-instance' => "attribute" 
); 

$result = $client->call("Assess", array("assess-request"=>$params)); 
if ($client->fault) { 
    echo "<h2>Fault</h2><pre>"; 
    print_r($result); 
    echo "</pre>"; 
} else { 
    $error = $client->getError(); 
    if ($error) { 
    echo "<h2>Error</h2><pre>" . $error . "</pre>"; 
    } else { 
    echo "<h2>Main</h2>"; 
    echo '<pre>'; 
    print_r($result); 
    echo '</pre>'; 
    } 
} 

Wenn ich diesen Code ausführen, bekomme ich

Array 
(
    [faultcode] => SOAP-ENV:Client 
    [faultstring] => Invalid element. Expected: global-instance. Actual: 
    [detail] => Array 
     (
      [error-response] => Array 
       (
        [code] => com.oracle.determinations.server.exceptions.InvalidRequestException 
        [message] => Invalid element. Expected: global-instance. Actual: 
       ) 

     ) 

) 

Das macht mich glauben, dass ich nicht Eingang in das richtige Format bereitstellt aber kann nicht bestimmen, was das erwartete Format ist. Irgendwelche Hilfe in dieser Hinsicht?

EDIT: Wenn es hilft, die folgenden Teile der WSDL, die angezeigt wird, wenn ich die $ url im Browser öffnen

<wsdl:operation name="Assess"> 
    <wsdl:input message="typ:AssessRequest"/> 
    <wsdl:output message="typ:AssessResponse"/> 
</wsdl:operation> 

<xsd:complexType name="AssessRequest"> 
    <xsd:annotation> 
    <xsd:documentation>An assess-request contains an optional config node and a mandatory global-instance node.</xsd:documentation> 
    </xsd:annotation> 
    <xsd:sequence> 
    <xsd:element name="config" type="AssessmentConfiguration" minOccurs="0"> 
     <xsd:annotation> 
     <xsd:documentation>Options that control how the data provided to the assess operation should be processed, and how the response should be constructed.</xsd:documentation> 
     </xsd:annotation> 
    </xsd:element> 
    <xsd:element name="global-instance" type="GlobalInstanceType"> 
     <xsd:annotation> 
     <xsd:documentation>Input data on which to perform the assessment, using the policy model deployed at the service URL</xsd:documentation> 
     </xsd:annotation> 
    </xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 
+0

soapUI ist ein sehr gutes, kostenloses Tool, mit dem Sie Dienste testen können, ohne Code zu schreiben (es tut viel mehr). Starten Sie nach dem Herunterladen ein neues Projekt, indem Sie die WSDL-URL angeben. Es wird eine Standardanforderung erstellt, die Sie durch Ihre Anfrage ersetzen können. Senden Sie die Anfrage, überprüfen Sie die Antwort. Wenn die Antwort akzeptabel ist, wissen Sie, dass Ihre Anfrage gut ist. Wenn nicht, ist Ihre Antwort nicht im richtigen Format. – MikeC

+0

Danke MikeC für den Vorschlag. Ich habe anfangs SeifeUI verwendet und ich bekam Antwort. Also der Service ist gut. Was ich nicht sicher bin, ist das Format, in dem die Eingabe an den Dienst übergeben werden muss – asprin

Antwort

0

Ihre Aussage „Das macht mich glauben, dass ich Ich gebe keine Eingabe im richtigen Format "warf mich ab. Was Sie an dieser Stelle benötigen, ist ein Tutorial in der Verwendung von nuSOAP und PHP. SO ist wahrscheinlich nicht der richtige Ort dafür. Mehr wie PHP NuSOAP Tutorial oder Working with PHP NuSOAP

Verwandte Themen