J'ai créé un service Web simple au ASP.NET
et je souhaite que ce service soit utilisé dans une application PHP
. Le service Web est la suivante:Impossible d'afficher les données en PHP à l'aide du service Web ASP.NET
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public List<Customer> GetCustomers(int id)
{
id = Convert.ToInt32(HttpContext.Current.Request.QueryString["id"]);
List<Customer> lst = null;
using (var context = new DemoEntities())
{
lst = (from c in context.Customer
where c.CustomerID == id
select c).ToList();
}
return lst;
}
Dans le service Web ci-dessus, est passé un identifiant client pour récupérer les détails du client. Donc, pour consommer ce service dans PHP
, j'ai essayé de faire la bibliothèque suivante en utilisant nuSoap
comme suit et il fonctionne presque:
<?php
require_once("lib/nusoap.php"); //Using the nuSoap library
$client = new nuSoap_Client('http://localhost:1284/MyCustomers.asmx?wsdl', TRUE); //Passed the ASP.NET web service and an object created
$result = $client->call('GetCustomers', array('id' => 1)); //Called the GetCustomers method and passed a default parameter
foreach($result as $item) //Tried to iterate in a foreach loop
{
echo $item; //Here is the issue - The output returns or returned only the name 'Array'
}
?>
Je l'ai fait PHP
programmation il y a longtemps et à essayer de comprendre la question de recherche Google. J'ai même essayé d'accéder à l'index du tableau avec la propriété de service Web directement comme ci-dessous, mais il semble que manque quelque chose ou peut-être pas la bonne façon: Une idée serait appréciée
echo $item[1]->CustName;
echo $item[1]; //Even this
En ce moment, je reçois les Xml
données comme suit à l'aide du savon service web:
<ArrayOfCustomer>
<Customer>
<CustomerID>2</CustomerID>
<CustName>John</CustName>
<CustAddress>On Earth</CustAddress>
<CustLocation>On Earth</CustLocation>
<CustSex>Male</CustSex>
<CustType>3</CustType>
<CustStatus>2</CustStatus>
<CustDetails>Great guy - Always regular.</CustDetails>
</Customer>
</ArrayOfCustomer>
Mise à jour 1: Utilisé var_dump($item)
et obtenir actuellement les éléments du tableau comme suit:
array
'Customer' =>
array
'CustomerID' => string '2' (length=1)
'CustName' => string 'John' (length=7)
'CustAddress' => string 'On Earth' (length=25)
'CustLocation' => string 'On Earth' (length=10)
'CustSex' => string 'Male' (length=4)
'CustType' => string '3' (length=1)
'CustStatus' => string '2' (length=1)
'CustDetails' => string 'Great guy - Always regular.' (length=47)
Mais quand essayé avec ce $item->Customer->CustName
, obtenir cette erreur encore une fois - Essayer d'obtenir la propriété de non-objet.
Mise à jour 2: Encore une fois utilisé var_dump($item)
et le résultat est le suivant avec la programmation PHP
:
<?php
require_once("lib/nusoap.php");
$client = new nuSoap_Client('http://localhost:1284/MyCustomers.asmx?wsdl', TRUE);
$result = $client->call('GetAllCustomers'); //Without any parameter
foreach($result as $item)
{
echo var_dump($item);
}
?>
Sortie:
array
'Customer' =>
array
0 =>
array
'CustomerID' => string '1' (length=1)
'CustName' => string 'Jack' (length=7)
'CustAddress' => string 'On Earth' (length=25)
'CustLocation' => string 'On Earth' (length=10)
'CustSex' => string 'Male' (length=4)
'CustType' => string '3' (length=1)
'CustStatus' => string '2' (length=1)
'CustDetails' => string 'Regular Customer and always happy to cooperate.' (length=47)
1 =>
array
'CustomerID' => string '2' (length=1)
'CustName' => string 'John' (length=4)
'CustAddress' => string 'On Earth' (length=7)
'CustLocation' => string 'On Earth' (length=10)
'CustSex' => string 'Male' (length=4)
'CustType' => string '3' (length=1)
'CustStatus' => string '2' (length=1)
'CustDetails' => string 'Great guy - Always regular.' (length=25)
Encore une fois, a essayé d'utiliser deux boucles pour obtenir la les valeurs sont les suivantes, mais il ne renvoie que les deux premiers résultats et il y a un total de 10 enregistrements dans la base de données:
<?php
require_once("lib/nusoap.php");
$client = new nuSoap_Client('http://localhost:1284/MyCustomers.asmx?wsdl', TRUE);
$result = $client->call('GetAllCustomers');
$count = count($result);
foreach($result as $item)
{
for($i = 0; $i <= $count; $i++)
{
echo 'Name: ' . $item['Customer'][$i]['CustName'].'<br/>';
}
}
?>
Sortie:
Name: Jack //Returns only first two records though it should return all the records
Name: John
Je suis en mesure de voir les éléments du tableau en utilisant 'var _dump ($ item) 'mais quand essayé avec ce' $ item-> Customer-> CustName', obtenir à nouveau cette erreur - ** Essayer d'obtenir la propriété de non-objet **. Merci pour la suggestion rapide. Voir ma mise à jour post. – user8512043
J'ai mis à jour ma réponse :) – Amjo
Great! Merci beaucoup et a parfaitement fonctionné. J'ai appris beaucoup de choses :) – user8512043