簡體   English   中英

如何使用SOAP從PHP向C#WCF服務發送對象

[英]how to send an object to C# WCF service from PHP using SOAP

我在從PHP發送WCF Web服務中發送定義為datacontract的自定義對象時遇到問題。 我正在嘗試通過SOAP完成此操作。

這是dataContract的樣子:

[DataContract]
    public class simplyCustomer
    {
        [DataMember]
        public int id;
        [DataMember]
        public string name;
        [DataMember]
        public string contact;
        [DataMember]
        public string street1;
        [DataMember]
        public string street2;
        [DataMember]
        public string city;
        [DataMember]
        ...
    }

因此,我有一個函數,它在WCF服務上將simpleCustomer作為參數。 php可以使用返回一個函數的另一個函數來接收simplyCustomer 但是,如果我使用PHP中的以下代碼調用接受它的代碼:

$retVal = $simplyService->__soapCall("addCustomer",array('parameters'=>$params));

此調用生成的SOAP信封使對象為NULL,從而導致WCF服務抱怨存在null引用。

這是生成的信封:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:addCustomer/></SOAP-ENV:Body></SOAP-ENV:Envelope>

參數應該在addCustomer所在的addCustomer ,但那里什么也沒有。

任何幫助將不勝感激!

謝謝!

盡管這是之前提出的問題,但自從我提出相同問題以來,就想添加我的意見。

假設您的運營合同看起來類似於

[OperationContract]    
public <return_type> addCustomer(simplyCustomer parameters);

考慮到$ params在初始化時設置了所有必需的值並且變量名與數據協定完全相似,因此您建議的內容應該起作用。

盡管有一些技巧可以解決。

1)如果您已成功將對象發送到服務,則可以檢查服務日志以查看出了什么問題。

2)只需檢查您的構造函數即可查看所有參數。

3)檢查肥皂客戶端是否已初始化並正確使用也很好。

例如:(以下是眾多可能性之一)

$client = new Client( $baseUrl, array('soap_version' => SOAP_1_1,));
$result = $client->addCustomer(array("parameters" => $params ));

我有同樣的問題。 不能看到你如何建立你的$ params,但我這樣做來解決了我的問題:

$username = "test";
$password = "test";

$input = array ("composite" => array("Password" => $password, "UserName" => $username));

$result=$client->__SoapCall('AuthenticateUser',array('parameters'=>$input));

我的服務方法如下所示

[OperationContract]
AuthenticationData AuthenticateUser(AuthenticationData composite);

弄清楚如何制作肥皂的東西時,使用Fiddler是一個很好的幫助

在構建私人項目時,我遇到了同樣的問題。

我的解決方案是使用T4生成服務合同和數據合同代理,也許您覺得它有用。 如果您有任何疑問,請給我發消息,模板尚未經過全面測試。

您可以在github上找到模板,包括樣本servicecontracts / datacontracts:

https://github.com/schaermu/wcf-phpclient-t4

隨時分叉該項目!

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM