PHP肥皂的用法
我正在试图通过SOAP插入远程服务器的数据.但得到以下错误:
object(stdClass)#3(1){[“DataInsertResult”] => string(51)“Hata:DI – 值不能为空.参数名称:s”} 在这里你可以找到我的代码如下: <?php $client = new SoapClient("http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?wsdl"); $connect = $client->Authenticate("accountname","password"); $send = $client->DataInsert(array( "idRoot" => array ( "DataToDb" => array( "Drow" => array ( "FName" => "George","LName" => "Houston","Email" => "gerorge@emailprovider.com","InvitedBy" => "Mary J","Job" => "Architect","City" => "Newyork",) ) ) )); var_dump($send); echo $client->DataInsertResponse; ?> 我怎么能解决这个问题? 嗨,在这里你可以看到我的webservice提供者的.net(?)代码.我如何使用它作为PHP代码? Webservice Url: http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?wsdl protected void btn_Save_Click(object sender,EventArgs e) { PwebS.MassDataAccepter mda = new PwebS.MassDataAccepter(); string Result = "Error!"; string Token = mda.Authenticate("user","pass"); string data = @"<idRoot> <DataToDb> <Drow> <FName>George</FName> <LName>Houston</LName> <Email>gerorge@emailprovider.com</Email> <InvitedBy>Mary J</InvitedBy> <Job>Architect</Job> <City>Newyork</City> </Drow> </DataToDb> </idRoot>"; if (Token.Length > 30) { Result = mda.DataInsert(Token,data); } if (Result.Contains("Inserted : 1")) lbl_Info.Text = "Data Inserted!"; else if (Result.Contains("Updated : 1")) lbl_Info.Text = "There is same data in db! Duplicate Data!"; else lbl_Info.Text = "Error!"; } 嗨,几天后我得到一个有趣的消息… php_soap无法连接web服务但nusoap工作正常!下面你可以看到我的代码,但我得到一个新的错误,你可以看到代码后的错误:) <?PHP require_once('includes/nusoap/nusoap.php'); $client = new nusoap_client("http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?wsdl","wsdl","",""); $err = $client->getError(); if ($err) { echo "<h2>Constructor error</h2><pre>" . $err . "</pre>"; } $params = array( 'Username'=>'my_username','Password'=>'my_password' ); $result = $client->call("Authenticate",$params,false,true); 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); $tokenkey = $result['AuthenticateResult']; echo $tokenkey; echo "</pre>"; } } $veri = "<idRoot> <DataToDb> <Drow> <FName>George</FName> <LName>Houston</LName> <Email>gerorge@emailprovider.com</Email> <InvitedBy>Mary J</InvitedBy> <Job>Architect</Job> <City>Newyork</City> </Drow> </DataToDb> </idRoot>"; echo "<hr />"; $send = $client->call("DataInsert",$tokenkey,$veri); var_dump($send); ?> 结果: Result Array ( [AuthenticateResult] => 92528146-183B-4651-B852-6A1C97F1E908 ) 92528146-183B-4651-B852-6A1C97F1E908 //This means we connect the webservice and we got "token" bool(false) //This means there is an error in data 解决方法
这看起来像一个.NET错误,你无法在php端解决它.但也许缺少一个参数.
例如 : public void DataInsert(string test1,string s) 如果s作为null传递.net将抛出一个错误,因为“值不能为null.参数名称:s”}“ http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?op=DataInsert <DataInsert xmlns="http://tempuri.org/"> <Token>string</Token> <Data>string</Data> </DataInsert> 我认为Data或Token为null,你只传递了1个参数,现在Data为null, <?php $client = new SoapClient("http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?wsdl"); $connect = $client->Authenticate("accountname","password"); $data = "<idRoot> <DataToDb> <Drow> <FName>George</FName> <LName>Houston</LName> <Email>gerorge@emailprovider.com</Email> <InvitedBy>Mary J</InvitedBy> <Job>Architect</Job> <City>Newyork</City> </Drow> </DataToDb> </idRoot>"; $send = $client->DataInsert($connect->AuthenticateResult,$data); var_dump($send); ?> Selamlar(: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |