Semplice php client e web service scritto in c# non funzionanti

marcomangiante

Nuovo Utente
28 Dic 2007
4
0
0
Salve a tutti,

sono un principiante e sto cercando di creare un client di esempio in php (php 5.2.5 con estensioni soap abilitate) per due piccoli web services in c# che ho scritto: spero di essere abbastanza esaustivo nello scrivere quello che succede.

Sto usando Windows Vista Ultimate con IIS 7; tutti i file vengono salvati in wwwroot.

Per prima cosa, ho creato il web service in c# (il codice restituisce semplicemente un numero casuale tra 1 e 90), salvandolo come file randomnumber.asmx:

Codice:
<%@ WebService Language="C#" class="RandomNumberService" %>
using System;
using System.Web.Services;

[WebService(Namespace="http://localhost")]

class RandomNumberService {
[WebMethod] public int getRandomNumber() {
// Create a new random class      
Random RandomClass = new Random();
// Obtain a random integer in a range between 1 and 90
int RandomNumber = RandomClass.Next(1,90);
return (RandomNumber);
}
}

Dopo questo, ho aperto il file in internet explorer 7 tramite http://localhost/randomnumber.asmx, controllato che funzionasse sempre nel browser e da qui ho anche ricavato il corrispondente wsdl, salvandolo sempre nella root di IIS.

Dopo fatto ciò, ho scritto un semplice web client in php, simplerandomnumbertest:

PHP:
<?php
   $client = new SoapClient("http://localhost/randomnumber.wsdl");
   $result = $client->getRandomNumber();
   echo("Random number is: " . $return);
?>


L'ho eseguito ma mi dava come errore "Cannot convert type 'int' to 'string'".
Ho provato convertendo nel codice c# l'int in string, rinominando anche il file come randomnumberstr.asmx
Il nuovo codice era:

Codice:
<%@ WebService Language="C#" class="RandomNumberService" %>
using System;
using System.Web.Services;

[WebService(Namespace="http://localhost")]

class RandomNumberService {
[WebMethod] public string getRandomNumber() {
// Create a new random class      
Random RandomClass = new Random();
// Obtain a random integer in a range between 1 and 90
int RandomNumber = RandomClass.Next(1,90);
string strRandomNumber = RandomNumber.ToString();
return (strRandomNumber);
}
}

Ho ovviamente di nuovo ricavato il file wsdl e praticamente nel client php ho riscritto solo la riga:

PHP:
$client = new SoapClient("http://localhost/randomnumberstr.wsdl");

A questo punto ho ottenuto l'errore:

"Catchable fatal error: Object of class stdClass could not be converted to string in (path/del/file/client/php) line 5".

Dopo vari altri e non proficui esperimenti, ho inserito, nel client, al posto della linea di codice

PHP:
echo("Random number is: " . $return);

la linea:

PHP:
print_r($result);

che mi restituiva il risultato corretto insieme ad altri parametri, ad esempio:

HTML:
stdClass Object ( [getRandomNumberResult] => 45 )


A questo punto, ho deciso per curiosità, di scrivere un semplice web service sempre in c# che, passando due numeri, mi restituisse la loro somma.
Ho chiamato il web service add.amsx (da cui ho ricavato poi il relativo file wsdl):

Codice:
<%@ WebService Language="C#" class="AddService" %>
using System;
using System.Web.Services;

[WebService(Namespace="http://localhost")]

class AddService {
[WebMethod] public int add(int left, int right) {
return (left+right);
}
}

e il client simpleaddclient.php:

PHP:
<?php
   $client = new SoapClient("http://localhost/add.wsdl");
   $result = $client->add(5,7);
   print_r($result); 
?>

Ho testato il web service senza client nel browser e funzionava, una volta invece che lo testavo con il client il risulato era:

HTML:
stdClass Object ( [addResult] => 0 )


La cosa curiosa, oltre al fatto che restituisce 0 ovviamente, è che se riprovo il primo web service scritto con il realtivo php client (quello con echo e non con print_r), ottengo non più l'errore segnalato prima, bensì la stringa:

HTML:
Random number is:

senza quindi nessun valore, ma neanche senza l'errore "catchable....."

A questo punto, se c'è qualcuno che mi potesse dare una mano sarebbe veramente ben accetto.
Praticamente se sapessi come trattare l'oggetto che viene restituito al client nella riga
PHP:
$result = $client->getRandomNumber();
, credo che avrei risolto almeno il primo problema.
Il secondo problema è perché il secondo client restituisce somma 0, invece della somma corretta.

Ogni aiuto è grandemente apprezzato.

--
Saluti,

Marco Mangiante
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] cambiare gli if in un url semplice PHP 1
L [PHP] convertire gli url ad forma semplice PHP 3
G Caricare una semplice Jpg con il PHP PHP 1
Z Semplice area privata in php PHP 6
J [PHP] sviluppare una semplice calcolatrice PHP 1
booklisa [PHP] Domanda semplice (apparantemente) PHP 4
R [PHP] Semplice form PHP 4
MarcoGrazia Costruire una semplice chat in PHP non è affatto semplice. PHP 3
A una guida semplice in php PHP 2
A problema con un semplice form per un loggin in php PHP 2
P inizio con il php ... semplice aiuto!! PHP 12
M Semplice sito php/mysql...è veramente semplice ? PHP 5
W [OFFRO] script php+sql semplice retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
W class diagram per un semplice sito Html (con pochissimo php) HTML e CSS 0
H Semplice CMS per news con PHP e XML PHP 3
R Cerco [retribuito]programmatore php mysql per sviluppo semplice progetto di ticketing Offerte e Richieste di Lavoro e/o Collaborazione 4
A [MYSQL+PHP]Non riesco a fare la query!!!Penso sia semplice.. PHP 1
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
Federico.Marcelo qual è il modo più semplice per creare file GIF di alta qualità? Webdesign e Grafica 4
V Semplice barra di ricerca con filtro categorie prodotti E-Commerce 0
M Un semplice saluto Presentati al Forum 1
T Visualizzare un Xml su un sito in modo semplice XML 1
X [Photoshop] Cercasi strumento per ottenere un semplice effetto. Photoshop 6
G [CERCO][Retribuito] Programmatore Windows per un semplice software Offerte e Richieste di Lavoro e/o Collaborazione 0
G aiuto per semplice menu onclick HTML e CSS 6
T Problema Semplice Script Javascript 1
Mr. Alex D. Creazione semplice autorisponditore con redirect PHP 1
steak Casella di ricerca completa, invece di semplice ricerca tra tag HTML e CSS 0
A Semplice applicazione con le facebook api PHP 1
Pi3tro [Richiesta]Semplice form PHP 6
R galleria immagini semplice a schermo intero jQuery 1
C Creare semplice timer in Visual Basic Visual Basic 0
Trapano Galleria immagini semplice PHP 5
S problema con ajax semplice login script Javascript 8
L [Java] Consigli progettuali per una semplice applicazione Java 6
Trapano query semplice? PHP 21
M Semplice pagina per inserire/leggere dati su database PHP 5
E semplice ciclo if!??!?!? :dipser: MS Access 0
L login semplice con array PHP 10
L Semplice giochino javascript Javascript 20
N Menu verticale semplice stile Yahoo WordPress 2
L guida semplice per imparare jquery jQuery 5
D Redirect: come mai non funziona un semplice redirect? Apache 0
N Semplice timer Snippet PHP 0
L Semplice esercizio funzioni JavaScript Javascript 5
borgo italia phishing o malware o semplice truffa? Discussioni Varie 0
P Galleria immagini semplice Javascript 5
Web Designer Semplice Tutorial Photoshop Effetto Fantasma Photoshop 1
ste80 Problemuccio con semplice guestbook PHP 4
S semplice query che non funziona :( PHP 3

Discussioni simili