代码之家  ›  专栏  ›  技术社区  ›  s.sam

通过PHP调用wcfsoapweb服务时出错

  •  0
  • s.sam  · 技术社区  · 6 年前

    对象(SoapFault)#5“无法处理消息,因为内容类型为'application/soap+xml;字符集=utf-8;action=“web服务URL”'不是预期的类型'text/xml;字符集=utf-8'。

    这是我的密码

    <?php 
       $X = new X ([
        'Card'  => '53535',
        'Terminal' => '43534534',
        'Amount'     => '1000',
        'OrderId'    => '1',
        'ReturnUrl'  => 'test url',
        'Password'   => 'D414305754BE7625CA70D',
        'MobileNo'   => '03003030',
        'AdditionalData' => 'test' ]);
    $request_key = $X ->request(2, 1000, 'http://');
    
    class WebServicePaymentRequest
    {
    public $Card  = "53535";
    public $Terminal = "43534534";
    public $Amount     = "1000";
    public $OrderId    = "1";
    public $ReturnUrl  = "test url";
    public $Password   = "D414305754BE7625CA70D";
    public $MobileNo   = "03003030";
    }
    
    class X  {
    
    private $Card;
    private $Terminal;
    private $Amount;
    private $OrderId;
    private $ReturnUrl;
    private $Password;
    private $MobileNo;
    private $AdditionalData;
    private $Token;
    
    
    private $wsdl_url = 'https://XXX/WebServices/PaymentUtils.svc?wsdl';
    
    
    public function __construct($params)
    {
        $this->Card      = $params['Card'];
        $this->Terminal     = $params['Terminal'];
        $this->Password       = $params['Password'];
        $this->Amount         = $params['Amount'];
        $this->OrderId        = $params['OrderId'];
        $this->ReturnUrl      = $params['ReturnUrl'];
        $this->MobileNo       = $params['MobileNo'];
        $this->AdditionalData = $params['AdditionalData'];
    
    }
    
    
    public function request($order_id, $amount, $callback)
    {
        $options = array(
            "soap_version" => SOAP_1_2,
            "cache_wsdl" => WSDL_CACHE_NONE,
            "exceptions" => false,
            "encoding"=> 'UTF-8' 
        );
    
        $client = new SoapClient($this->wsdl_url, $options);
    
       $obj = new WebServicePaymentRequest;
    
       $obj->Amount = $amount; // Output the property
       $obj->OrderId = $order_id;
       $obj->ReturnUrl = $callback;
    
       $result = $client->PaymentRequest($obj);
    
    echo $result;
     var_dump($result);
    
      $result = json_decode($result, true);
       $this->Token = $result['Token']; 
    } 
    } 
    ?>
    

    提前谢谢。。。

    1 回复  |  直到 6 年前
        1
  •  1
  •   s.sam    6 年前

    我发现Soapclient不支持PHP中的WCF,我通过将带有SoapAction头的Xml作为Body发布到Url来解决这个问题。我使用SoapUi获取Xml,然后使用postman获取结果。