-2

私はこのコードをまとめようとしていますが、うまくいきません。初心者なので何が悪いのかわかりません。

しようとしています:

SOAP プロトコルを介してサーバーにリクエストを送信します。最初に以前の作業コードが参照されます。

何が失敗しますか?

リクエストを送信しようとしましたが、何も表示されません。良いことは何も起こりません。デバッガーでコードを実行しましたが、問題は見つかりませんでした。

以前の作業コード:

<?php
$client = new SoapClient('http://xxxxxxx.xxxxxxx.pt/xxxxxxx.asmx?WSDL');

$function = 'EditClient';

$arguments= array('EditClient' => array(
                        'empresa'   => 'xxxxx',
                        'password'      => '********',
                        'cliente'        => '19781978',
                        'nome'        => 'Justiceiro',
                        'morada'        => 'Avenida akolá',
                        'localidade'        => 'Integral',
                        'codPostal'        => '4000-100',
                        'pais'        => 'portugal',
                        'telefone'        => '253994257',
                        'fax'        => '000000000',
                        'telemóvel'        => '000000000',
                        'email'        => 'email@email.pt',
                        'nif'        => '000000000',
                        'contacto'        => 'none',
                ));
$options = array('location' => 'http://xxxxxx.xxxxxxx.pt/xxxxxx.asmx?WSDL');

$result = $client->__soapCall($function, $arguments, $options);

echo 'Response: ';
print_r($result);
?>

私は何をしているの?

これは私がこれまでに得たものであり、何も場違いに見えませんが、もう一度言いますが、私はこれに非常に慣れていません。

<?php

class cliente{

    private $data;
    private $arguments;  
    private $function;  
    private $client;  
    private $result;

    function editcliente(){
        $this->data=array();
        $this->arguments=array();
    }

    public function setData($d){
        $this->data = $d;
    }

    public function validate(){
            $options = array('location' => 'http://xxxxxx.xxxxxxx.pt/xxxxxx.asmx?WSDL');
            $verifica = true;
            foreach ($this->data as $campo) {
                $this->data[$campo] = $_GET[$campo];
                    $arguments = array('EditCliente' => array(
                        'empresa'   => 'xxxxxx',
                        'password'      => '********',
                        'cliente'        => ' ',
                        'nome'        => ''.$this->data["fnome"].'',
                        'morada'        => ''.$this->data["fmorada"].'',
                        'localidade'        => ''.$this->data["flocalidade"].'',
                        'codPostal'        => '4000-100',
                        'pais'        => ''.$this->data["Portugal"].'',
                        'telefone'        => 'vazio',
                        'fax'        => 'vazio',
                        'telemóvel'        => ''.$this->data["ftelemovel"].'',
                        'email'        => ''.$this->data["femail"].'',
                        'nif'        => ''.$this->data["fnif"].'',
                        'contacto'        => ''.$this->data["empresa"].'',
                    ));
                }
            }
    }

    public function getData(){
        print_r($this->data);
        print_r($this->arguments);
    }

    public function sendrequest(){
        $client = new SoapClient('http://apimarvin.ponto25.pt/apimarvin.asmx?WSDL');
        $function = 'EditCliente';
        $result = $client->__soapCall($function, $arguments, $options);
    }   
}

$cliente = new cliente();
$campos = array('fnome','fmorada','flodalidade','fcodigopostal','ftelemovel','femail','fnif','fempresa');

$cliente->setData($campos);
echo ($cliente->validate($data));
echo ($cliente->getData($data));
$cliente->sendrequest($data);

?>
4

1 に答える 1

0

これは、PHPでSOAP関数を呼び出す方法です

私のインデックスでは:

$client = new SoapClient('http://localhost:8100/PortalService.svc?wsdl');

その後:

$arguments = array('argument' => $arg);
$response = $wcfclient->NameOfFunction($arguments);

シンプルで明確。これがあなたを助けることを願っています。

于 2013-10-10T14:44:23.957 に答える