$parameters = array("参数名1"=>"13200000000",
                    "参数名2"=>"2390", 
.....);

解决方案 »

  1.   

    -----------servside.php---------------
    <?phprequire_once('nusoap.php');$s = new soap_server;            /*
    $s->register('login');
                              */
    function login($name){
    if($name!="aaaaa"){
            return new soap_fault('Clientside', 'fffffffffff', 'wrong name');
        }else{
         return serialize(array("aaa","bbb","c"=>"ccc"));
        }
    }$server->configureWSDL('login', 'http://172.16.4.100/wenguangqing/www/soap/');
    // Put the WSDL schema types in the namespace with the tns prefix
    //$server->wsdl->schemaTargetNamespace = 'http://172.16.4.100/wenguangqing/www/soap/serverside.php';
    // Register the method to expose
    $server->register('login',                // method name
        array('name' => 'xsd:string'),        // input parameters
        array('return' => 'xsd:string'),      // output parameters
        'http://172.16.4.100/wenguangqing/www/soap/'             // soapaction
    );$s->service($HTTP_RAW_POST_DATA);
    ?>---------------clientside.php-------------------
    <?phprequire_once('nusoap.php');
                                  /*
    //$url 存放serverside.php文件的访问路径
    $url = 'http://172.16.4.100/wenguangqing/www/soap/serverside.php';$param = array('name'=>'aaaaa');
    $c = new soapclient($url);
    $result = $c->call('login', $param);
    print_R(unserialize($result));
                                        *///$url 存放serverside.php文件的访问路径
    $url = 'http://172.16.4.100/wenguangqing/www/soap/serverside.php?wsdl';$param = array('name'=>'aaaaa');
    $c = new soapclient($url, 'wsdl');
    $result = $c->call('login', $param);
    print_R(unserialize($result));      echo $result;?>
      

  2.   

    $parameters = array("13200000000","2390", 0, true, true, true);此一句写错了$parameters = array('var1'=>"13200000000",'var2'=>"2390"...);给你调用googleSearch的例子查看写****.php?query=SOAP
    <?php
    /*
     * $Id: wsdlclient6.php,v 1.1 2004/01/26 07:15:20 snichol Exp $
     *
     * WSDL client sample.
     *
     * Service: WSDL
     * Payload: rpc/encoded
     * Transport: http
     * Authentication: none
     */require_once('nusoap/nusoap.php');
    $proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
    $proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
    $proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
    $proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';$client = new soapclient('http://api.google.com/GoogleSearch.wsdl', true,
    $proxyhost, $proxyport, $proxyusername, $proxypassword);
    $err = $client->getError();
    if ($err) {
    echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
    }
    $client->soap_defencoding = 'UTF-8';$key = 'eD2A9vlQFHLGnNPZPOLJfQQhOsqYg+Mh';
    $q = $_GET['query'];
    $start = 1;
    $maxResults = 10;
    $filter = false;
    $restrict = '';
    $safeSearch = false;
    $lr = 'lang_zh-CN';
    $ie = 'UTF-8';
    $oe = 'UTF-8';$params = array(
    'key' => $key, 'q' => $q, 'start' => $start, 'maxResults' => $maxResults,
    'filter' => $filter, 'restrict' => $restrict, 'safeSearch' => $safeSearch, 'lr' => $lr,
    'ie' => $ie, 'oe' => $oe
    );$result = $client->call('doGoogleSearch', $params);
    // Check for a fault
    if ($client->fault) {
    echo '<h2>Fault</h2><pre>';
    print_r($result);
    echo '</pre>';
    } else {
    // Check for errors
    $err = $client->getError();
    if ($err) {
    // Display the error
    echo '<h2>Error</h2><pre>' . $err . '</pre>';
    } else {
    // Display the result
    echo '<h2>Result</h2><pre>';
    print_r($result);
    echo '</pre>';
    }
    }
    echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
    echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
    echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
    ?>
      

  3.   

    如果不写array('val1' => 123)这里的val1,虽然可以调用,但是Soap消息实际上是错误的,得不到正确的返回结果。
      

  4.   

    可是我已经将传入的params写成array('val1' => 123,...)的形式了,还是不行,关键他部报错,奇怪
    以下是soap response的body形式(not request)
    以前做java时直接用result.getFeeMSISDN()类似的就可以得到,现在怎么得feeMSISDN的值?
    soap server是用.net部署的<soap:Body>
    <ProcessOrderResponse xmlns="http://www.wapdm.com/MonthlyService">
    <serviceBill errorCode="UNKNOWN or SUCCESS or SUCCESS1 or SUCCESS2 or SUCCESS3 or FAIL or FAIL1 or FAIL2 or FAIL3 or FORMATERROR or SYSERROR or NoExist or ServiceCodeError or ServiceNotOpen or NotifyUserFail or BillSendFail" errorDesc="string" xmlns="http://wapdm.com/namespaces/MoMtInfo">
    <feeMSISDN>string</feeMSISDN>
    <desMSISDN>string</desMSISDN>
    <srvCode>string</srvCode>
    <status>NoExist or WaitToAuthen or WaitUserMoConfirm or WaitUserConfirm or WaitPartnerConfirm or WaitToSendBill or NeedSendBill or BillSendError or WaitBillResult or OrderFinished or BillResultOK or BillResultFail</status>
    <cancelTime>dateTime</cancelTime>
    <messageID>string</messageID>
    <message>string</message>
    <receiveTimeFromClient>dateTime</receiveTimeFromClient>
    <SendStatus>int</SendStatus>
    <reportStatus>string</reportStatus>
    <reportTime>dateTime</reportTime>
    <cancelOrient>string</cancelOrient>
    </serviceBill>
    </ProcessOrderResponse>