2013-10-09 81 views
0

WSDL我是新来使用XML,我有一个中间了解PHP的。我已经通过多种教程和试图让这个东西吐出无济于事的回应视频了。我不喜欢使用的StackOverflow因为我很紧张,我现在不是困扰人们或去展示我的愚蠢(或两者),但我很绝望。麻烦与PHP

我收到了来自第三方的这些XML文件,目的是将服务集成到我们公司的网站。我这样做之前,我需要得到的东西在本地工作,我似乎无法弄清楚。

这是我被提供的WSDL(canx_antu-2.0.wsdl):

<?xml version="1.0" encoding="UTF-8" ?> 
<wsdl:definitions xmlns:cnx="http://www.cannex.com" 
        xmlns:cws="http://www.cannex.com/canx_antu/" 
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        name="canx_antu" 
        targetNamespace="http://www.cannex.com/canx_antu/"> 

    <wsdl:documentation> 
    This file and any supporting xsd schemas are located at "http://localhost:8080/CANX/wsdl" 
    </wsdl:documentation> 

<!-- Data types used by the operation --> 
    <wsdl:types> 
    <xsd:schema targetNamespace="http://www.cannex.com/canx_antu/"> 
     <xsd:import schemaLocation="req_antu_type-2.0.xsd" namespace="http://www.cannex.com" /> <!-- Data types used for the request --> 
     <xsd:element type="cnx:req_antu_type" name="antu_request" /> 
    </xsd:schema> 
    <xsd:schema targetNamespace="http://www.cannex.com/canx_antu/"> 
     <xsd:import schemaLocation="resp_antu_type-2.0.xsd" namespace="http://www.cannex.com" /> <!-- Data types used for the response --> 
     <xsd:element type="cnx:resp_antu_type" name="antu_response" /> 
    </xsd:schema> 
    </wsdl:types> 

<!-- Definition of the data being communicated --> 
    <wsdl:message name="canx_antu_request"> <!-- Input/request name --> 
    <wsdl:part element="cws:antu_request" name="parameters" /> <!-- Data elements of the request --> 
    </wsdl:message> 
    <wsdl:message name="canx_antu_response"> <!-- Output/response name --> 
    <wsdl:part element="cws:antu_response" name="parameters" /> <!-- Data elements of the response --> 
    </wsdl:message> 

<!-- Set of operations --> 
    <wsdl:portType name="canx_antu_porttype"> <!-- Web service name --> 
    <wsdl:operation name="canx_antu_operation"> <!-- Operation name --> 
     <wsdl:input message="cws:canx_antu_request" /> <!-- Input/request operation --> 
     <wsdl:output message="cws:canx_antu_response" /> <!-- Output/response operation --> 
    </wsdl:operation> 
    </wsdl:portType> 

<!-- Data format used for the operation --> 
    <wsdl:binding name="canx_antu_binding" type="cws:canx_antu_porttype"> <!-- Type points to port above under operations --> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="canx_antu_operation"> 
     <soap:operation soapAction="http://www.cannex.com/canx_antu/canx_antu_operation" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 

    <wsdl:service name="canx_antu_service"> 
    <wsdl:port binding="cws:canx_antu_binding" name="canx_antu_binding"> 
     <soap:address location="http://localhost:8888/canx_antu/soap_antu-2.0.xml" /> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

请求(req_antu_type-2.0.XSD):

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.cannex.com" xmlns:cnx="http://www.cannex.com" 
    elementFormDefault="qualified"> 

    <xsd:include schemaLocation="antu_types-2.0.xsd" /> 

    <xsd:complexType name="req_antu_type"> 
     <xsd:sequence> 
      <xsd:element type="xsd:string" name="logon_id" /> 
      <xsd:element type="xsd:string" name="user_id" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="app" default="CANX" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="transaction_id" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="cost_basis" /> 
      <xsd:element type="xsd:date" name="birth_date" /> 
      <xsd:element type="xsd:date" name="joint_birth_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="owner_birth_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="premium_purchase_date" /> 
      <xsd:element type="xsd:date" name="first_payment_date" /> 
      <xsd:element type="cnx:fund_type_cd_type" name="fund_type_cd" /> 
      <xsd:element type="cnx:return_of_premium_cd_type" name="return_of_premium_cd" /> 
      <xsd:element type="cnx:guarantee_cd_type" name="guarantee_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:year_0_99_type" name="guarantee_year" 
       minOccurs="0" /> 
      <xsd:element type="cnx:month_0_11_type" name="guarantee_month" 
       minOccurs="0" /> 
      <xsd:element type="cnx:yn_type" name="indicate_impaired" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="income" 
       minOccurs="0" /> 
      <xsd:element type="cnx:rate_5_3_type" name="index_rate" 
       minOccurs="0" /> 
      <xsd:element type="cnx:index_type_cd_type" name="index_type_cd" /> 
      <xsd:element type="cnx:joint_type_cd_type" name="joint_type_cd" /> 
      <xsd:element type="xsd:string" name="name" /> 
      <xsd:element type="xsd:string" name="joint_name" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="owner" 
       minOccurs="0" /> 
      <xsd:element type="cnx:yn_type" name="is_owner_primary" /> 
      <xsd:element type="cnx:payment_frequency_cd_type" name="payment_frequency_cd" /> 
      <xsd:element type="cnx:rate_6_3_type" name="percent" 
       minOccurs="0" /> 
      <xsd:element type="cnx:rate_6_3_type" name="joint_percent" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="premium" /> 
      <xsd:element type="xsd:string" name="prepared_by" 
       minOccurs="0" /> 
      <xsd:element type="cnx:state_cd_type" name="region_cd" /> 
      <xsd:element type="cnx:state_cd_type" name="region_issued_cd" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="request_description" 
       minOccurs="0" /> 
      <xsd:element type="cnx:gender_cd_type" name="gender_cd" /> 
      <xsd:element type="cnx:gender_cd_type" name="joint_gender_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:gender_cd_type" name="owner_gender_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:yn_type" name="is_spouse" 
       minOccurs="0" /> 
      <xsd:element type="cnx:survey_type_cd_type" name="survey_type_cd" /> 
      <xsd:element type="cnx:year_0_99_type" name="temporary_year" 
       minOccurs="0" /> 
      <xsd:element type="cnx:month_0_11_type" name="temporary_month" 
       minOccurs="0" /> 
      <xsd:element type="cnx:parameter_set_cd_type" name="parameter_set_cd" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="institution_id" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="base_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="moment_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:time" name="moment_time" 
       minOccurs="0" /> 
      <xsd:element type="cnx:custom_type" name="custom" 
       minOccurs="0" maxOccurs="10" /> 
      <xsd:element type="xsd:string" name="filter_customer" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="filter_institution_id" 
       minOccurs="0" /> 
      <xsd:element type="cnx:trace_level_cd_type" name="trace_level_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:output_option_cd_type" name="output_option_cd" 
       minOccurs="0" /> 
      <xsd:element type="xsd:decimal" name="return_of_premium_rate" 
       minOccurs="0" /> 
      <xsd:element type="cnx:ratings_company_cd_type" name="ratings_company_cd" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="ratings_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:yn_type" name="exclude_not_rated" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="unique_c" 
       minOccurs="0" /> 
      <xsd:element type="cnx:unique_d_type" name="unique_d" 
       minOccurs="0" maxOccurs="20" /> 
      <xsd:element type="cnx:yn_type" name="is_test" /> 
     </xsd:sequence> 
     <xsd:attribute type="xsd:string" name="version" fixed="2.0" /> 
    </xsd:complexType> 

</xsd:schema> 

和响应(resp_antu_type-2.0 .xsd):

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.cannex.com" xmlns:cnx="http://www.cannex.com" 
    elementFormDefault="qualified"> 

    <xsd:include schemaLocation="req_antu_type-2.0.xsd" /> 

    <xsd:complexType name="resp_antu_type"> 
     <xsd:sequence> 
      <xsd:element type="xsd:date" name="run_date" /> 
      <xsd:element type="xsd:time" name="run_time" /> 
      <xsd:element type="xsd:string" name="transaction_id" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="request_no" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="single_institution_id" 
       minOccurs="0" /> 
      <xsd:element type="cnx:req_antu_type" name="antu_request" 
       minOccurs="0" /> 
      <xsd:element type="cnx:survey_notes_type" name="survey_notes" 
       minOccurs="0" /> 
      <xsd:element type="cnx:carrier_type" name="carrier" 
       minOccurs="0" maxOccurs="unbounded" /> 
      <xsd:element type="cnx:error_type" name="error" 
       minOccurs="0" /> 
     </xsd:sequence> 
     <xsd:attribute type="xsd:string" name="version" fixed="2.0" /> 
    </xsd:complexType> 

    <xsd:complexType name="carrier_type"> 
     <xsd:sequence> 
      <xsd:element type="xsd:string" name="institution_id" /> 
      <xsd:element type="xsd:string" name="naic" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="institution_name" /> 
      <xsd:element type="cnx:quote_type" name="quote" 
       maxOccurs="unbounded" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="error_type"> 
     <xsd:sequence> 
      <xsd:element type="xsd:string" name="error_level" /> 
      <xsd:element type="xsd:string" name="error_cd" /> 
      <xsd:element type="xsd:string" name="error_message" 
       minOccurs="0" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:simpleType name="expiry_cd_type"> 
     <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="G|NB|NG|" /> 
     </xsd:restriction> 
    </xsd:simpleType> 

    <xsd:complexType name="name_value_type"> 
     <xsd:simpleContent> 
     <xsd:extension base="xsd:string"> 
      <xsd:attribute type="xsd:string" name="name" use="required" /> 
     </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 

    <xsd:complexType name="notes_type"> 
     <xsd:sequence maxOccurs="unbounded"> 
      <xsd:element type="cnx:note_type" name="note" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="note_type"> 
     <xsd:simpleContent> 
      <xsd:extension base="xsd:string"> 
       <xsd:attribute type="xsd:string" name="note_id" use="required" /> 
      </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 

    <xsd:complexType name="quote_type"> 
     <xsd:sequence> 
      <xsd:element type="cnx:yn_type" name="return_of_premium" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="set" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="premium" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="income" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="tax_amount" 
       minOccurs="0" /> 
      <xsd:element type="cnx:rate_5_3_type" name="return_of_premium_rate" 
       minOccurs="0" /> 
      <xsd:element type="cnx:expiry_cd_type" name="expiry_cd" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="expiry_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:time" name="expiry_time" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="rating" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="set_unique" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="cusip" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="isin" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="product_name" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="illustration_id" 
       minOccurs="0" /> 
      <xsd:element type="xsd:string" name="illustration_pdf" 
       minOccurs="0" /> 
      <xsd:element type="cnx:request_overrides_type" name="request_overrides" 
       minOccurs="0" /> 
      <xsd:element type="cnx:name_value_type" name="name_value" 
       minOccurs="0" maxOccurs="unbounded"/> 
      <xsd:element type="cnx:notes_type" name="notes" 
       minOccurs="0" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="request_overrides_type"> 
     <xsd:sequence> 
      <xsd:element type="cnx:rate_6_3_type" name="percent" 
       minOccurs="0" /> 
      <xsd:element type="cnx:rate_6_3_type" name="joint_percent" 
       minOccurs="0" /> 
      <xsd:element type="cnx:rate_5_3_type" name="index_rate" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="amount" 
       minOccurs="0" /> 
      <xsd:element type="cnx:money_10_2_type" name="cost_basis" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="first_payment_date" 
       minOccurs="0" /> 
      <xsd:element type="xsd:date" name="premium_payment_date" 
       minOccurs="0" /> 
      <xsd:element type="cnx:guarantee_cd_type" name="guarantee_cd" 
       minOccurs="0" /> 
      <xsd:element type="cnx:year_0_99_type" name="guarantee_year" 
       minOccurs="0" /> 
      <xsd:element type="cnx:month_0_11_type" name="guarantee_month" 
       minOccurs="0" /> 
      <xsd:element type="cnx:year_0_99_type" name="temporary_year" 
       minOccurs="0" /> 
      <xsd:element type="cnx:month_0_11_type" name="temporary_month" 
       minOccurs="0" /> 
      <xsd:element type="cnx:yn_type" name="has_changed" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="survey_notes_type"> 
     <xsd:sequence maxOccurs="unbounded"> 
      <xsd:element type="cnx:survey_note_type" name="survey_note" /> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="survey_note_type"> 
     <xsd:simpleContent> 
      <xsd:extension base="xsd:string"> 
       <xsd:attribute type="xsd:string" name="survey_note_id" 
        use="required" /> 
      </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 

</xsd:schema> 

最后,这是我在我的PHP。我只是想通过必需的变量并吐出响应(的index.php):

<?php 

ini_set('soap.wsdl_cache_ttl', 1); 

$path = "http://localhost:8888/canx_antu/canx_antu-2.0.wsdl"; 
$client = new SoapClient($path); 

$result = $client->canx_antu_operation(array('logon_id' => 'CUST01', 
               'cost_basis' => 100000.00, 
               'birth_date' => '1944-12-30', 
               'premium_purchase_date' => '2013-03-28', 
               'first_payment_date' => '2013-04-28', 
               'fund_type_cd' => 'N', 
               'return_of_premium_cd' => 'GT', 
               'index_type_cd' => 'N', 
               'joint_type_cd' => 'N', 
               'name' => 'Johnny Rocket', 
               'is_owner_primary' => 'Y', 
               'payment_frequency_cd' => 'M', 
               'premium' => 100000.00, 
               'region_cd' => 'CA', 
               'gender_cd' => 'M', 
               'survey_type_cd' => 'JL', 
               'custom' => 1, 
               'unique_d' => 5, 
               'is_test' => 'N')); 

$array = $result->antu_request; 

var_dump($array); 

echo "<h2>Request</h2>"; 
echo "<pre>" . htmlspecialchars($client->request, ENT_QUOTES) . "</pre>"; 
echo "<h2>Response</h2>"; 
echo "<pre>" . htmlspecialchars($client->response, ENT_QUOTES) . "</pre>"; 

?> 

我得到的是一个空白页。如果我不传递一个数组,我得到NULL,并且没有任何东西显示为REQUEST或RESPONSE(所以它显然不工作,我只是不明白为什么)。

我很想直接回答,但对于一些进一步的学习来说,正确的方向也是理想的。

回答

0

你可能想沿着线的东西,

$result = $client->__soapcall('canx_antu_operation', array(
      'logon_id' => 'CUST01', 
      'cost_basis' => 100000.00, 
      'birth_date' => '1944-12-30', 
      'premium_purchase_date' => '2013-03-28', 
      'first_payment_date' => '2013-04-28', 
      'fund_type_cd' => 'N', 
      'return_of_premium_cd' => 'GT', 
      'index_type_cd' => 'N', 
      'joint_type_cd' => 'N', 
      'name' => 'Johnny Rocket', 
      'is_owner_primary' => 'Y', 
      'payment_frequency_cd' => 'M', 
      'premium' => 100000.00, 
      'region_cd' => 'CA', 
      'gender_cd' => 'M', 
      'survey_type_cd' => 'JL', 
      'custom' => 1, 
      'unique_d' => 5, 
      'is_test' => 'N' 
     ) 
); 
+0

嗯。这实际上并没有影响我看到的结果。不过谢谢你。 –

+0

你做了'var_dump($ result);'? –

+0

相同的结果。空白或NULL取决于我是否传递数组。 –