PHP-Soap的使用
我正在尝试通过SOAP将数据插入远程服务器。但得到的错误如下: 对象(stdClass)#3(1){[“DataInsertResult”]=>string(51)“Hata:DI-值不能为空。参数名称:s”} 在这里,您可以在下面找到我的代码:PHP-Soap的使用,php,authentication,soap,token,soap-client,Php,Authentication,Soap,Token,Soap Client,我正在尝试通过SOAP将数据插入远程服务器。但得到的错误如下: 对象(stdClass)#3(1){[“DataInsertResult”]=>string(51)“Hata:DI-值不能为空。参数名称:s”} 在这里,您可以在下面找到我的代码: <?php $client = new SoapClient("http://www.posta-tr.com/MassDataAccepter/MassDataAccepter.asmx?wsdl"); $connect = $client-&
<?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;
?>
这看起来像是一个.NET错误,您无法在php端解决它。但可能缺少一个参数 例如: 如果我的职能是 公共void数据插入(字符串test1,字符串s) 如果s作为null传递,则.net将抛出一个错误,即“值不能为null。参数名称:s”}
一串
一串
我认为数据或令牌为null,您只传递了1个参数,现在数据为null,
尝试发送2个参数,第一个是令牌,第二个是数据
Selamlar(:我认为传递给DataInsert的参数不正确,应该是这样的:
WDSL here->如您所见,我知道WDSL在哪里。我的序言不是这样!您阅读了我的问题吗?DataInsert(令牌,数据)需要2个值,就像您进行身份验证(用户,通过)一样你为什么要发送一个数组?adam da cok artiz ama doğru demiş,oraya dizi vermemelisiniz,2个参数istiyor,ve 1个参数boşgonderdiğiçin webservice tarafında hataya sebep oluyor.sidden gelen bilgileri kontrol etmedikleri için direk.NET hatasıdönüyor size.这也让我感兴趣,我想他制作了XML文件他是否必须直接插入XML字符串,第二个参数是什么?您好,这里您可以看到我的Web服务提供商的.net(?)代码。如何将其用作php代码?我添加了一个示例,您可以尝试。我尝试了,但没有任何更改!结果是:object(stdClass)#3(1){[“DataInsertResult”]=>string(51)”Hata:DI-值不能为空。参数名称:s“}将代码更改为“$send=$client->DataInsert($connect->AuthenticateResult,$data);”和var_dump($connect);连接数据是什么?您必须首先获取令牌数据。$connect dump:object(stdClass){[“AuthenticateResult”]=>string(1)“0”}$send dump(as$send=$client->DataInsert($connect->AuthenticateResult,$data);)对象(stdClass)#3(1){[“DataInsertResult”]=>string(51)“Hata:DI-值不能为空。参数名称:s”}
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
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
<DataInsert xmlns="http://tempuri.org/">
<Token>string</Token>
<Data>string</Data>
</DataInsert>
<?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);
?>
/* Get token key here */
$token = $tokenKey;
$data = array(
"idRoot" => array (
"DataToDb" => array(
"Drow" => array (
"FName" => "George",
"LName" => "Houston",
"Email" => "gerorge@emailprovider.com",
"InvitedBy" => "Mary J",
"Job" => "Architect",
"City" => "Newyork",
)
)
)
);
$params = array(
'Data' => $data,
'Token' => $token
);
$client = new SoapClient( /* wsdl */ );
$response = $client->DataInsert($params);