标签:php authentication soap token soap-client
我正在试图通过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,
尝试发送2个参数,首先是Token,Second是Data.
<?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(:
标签:php,authentication,soap,token,soap-client 来源: https://codeday.me/bug/20190710/1420244.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。