Interfacciare C# e WebService.Php

giovedì 23 febbraio 2006 - 15.32

AndreaKpr Profilo | Senior Member

Ciao a tutti, premetto che sono un po ignorante in materia.

Devo realizzare un applicazione che si interfacci con un Web Service.
Ho già provato a fare lavori simili interfacciandomi a WebService .Net
Ma adesso debbo collegarmi ad un Web Service Php.
Il prb è che quando in visual studio cerco di aggiundere un referenza web a quel servizio,
Visual mi risponde che non trova metodi ???

Come posso andare avanti ???

Gracias !

Brainkiller Profilo | Guru

>Ciao a tutti, premetto che sono un po ignorante in materia.
>
>Devo realizzare un applicazione che si interfacci con un Web
>Service.
>Ho già provato a fare lavori simili interfacciandomi a WebService
>.Net
>Ma adesso debbo collegarmi ad un Web Service Php.
>Il prb è che quando in visual studio cerco di aggiundere un referenza
>web a quel servizio,
>Visual mi risponde che non trova metodi ???
>
>Come posso andare avanti ???

Probabilmente quel Web Service non è stato creato seguendo i protocolli standard ?
Oppure stai utilizzando un WSDL errato ?
Prova a postare qui il link al Web Service.

Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

AndreaKpr Profilo | Senior Member

http://www.dev1.tracker.it/tracker/ws/listener.php

Brainkiller Profilo | Guru

>http://www.dev1.tracker.it/tracker/ws/listener.php

Questo Web Service non mi pare che funzioni, viene restituito:

<?xml version='1.0' encoding='ISO-8859-1'?> <!DOCTYPE trkws SYSTEM ''> <response user='' action='' idreq=''> <code>1003</code> </response>

1003 immagino sia un errore e non va bene. Dovrebbe essere restituito il WSDL.
Esempio qui:
http://webservices.dotnethell.it/WSContents.asmx?WSDL

Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

AndreaKpr Profilo | Senior Member

Mi sa che gli dovrei passare dei parametri a quel link...

Una Domanda, come posso creare una connessione verso quel web service e passagli un file Xml,

Non potendo utilizzare i WebReference di VisualStudioo ???

Brainkiller Profilo | Guru

>Mi sa che gli dovrei passare dei parametri a quel link...

Allora facciamo chiarezza, ripeto:

Se tu vuoi aggiungere un Web Service in Visual Studio devi avere come minimo il codice WSDL che è il codice descrittivo del Web Service. Ogni passo successivo non si può fare, non sapendo come funziona il web service, che parametri accetta, che metodi espone, e così via.
Quindi non è possibile rispondere alla tua seconda domanda finchè non abbiamo il WSDL.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

AndreaKpr Profilo | Senior Member

Ciao.
Ok, Ho capito il concetto...

Il WSDL non ce l'ho, quindi non posso aggiungere il webservice come riferimento in Visula studio.

Come posso però ad interagire con quel server.
Mi spiego meglio, parlando un po con il tipo che l'ha sviluppato mi ha detto che dovrei aprire un socket verso tale WebServer e
passagli i parametri per la connessione e richiesta di servizio.

Secondo voi come posso fare ???

Scusate l'ignoranza... ^_^

Brainkiller Profilo | Guru

>Il WSDL non ce l'ho, quindi non posso aggiungere il webservice
>come riferimento in Visula studio.

No, esatto.

>Come posso però ad interagire con quel server.
>Mi spiego meglio, parlando un po con il tipo che l'ha sviluppato
>mi ha detto che dovrei aprire un socket verso tale WebServer
>passagli i parametri per la connessione e richiesta di servizio.
>Secondo voi come posso fare ???
>Scusate l'ignoranza... ^_^

Se si usano i Web Services, di solito l'uso diretto dei Sockets non c'è. Perchè ogni piattaforma e ogni tool di sviluppo mette a disposizione Wizard o procedure per collegarsi al Web Service. L'uso del Web Service dev'essere semplice e lineare proprio l'opposto dei Sockets che erano complessi.
Quindi devi chiedere bene alla persona che l'ha sviluppato cosa intende.

I web services sono nati per fare un passo avanti, non indietro.
Ciao




David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

AndreaKpr Profilo | Senior Member

Hai ragione i webServer sono fatti per andare avanti ma putroppo ho a che fare con una persona non troppo avanti.

Paralndo con il tipo in questione mi ha detto che loro non sviluppano nulla sulla piattaforma Microsoft e
che per questo che non passano il WSDL.

Ora io devo collegarmi "per forza" al loro WebServer scritto in Php.
Loro mi hanno suggerito di creare una connessione Socket verso loro e passare una richiesta.
Per venirmi in contro mi hanno mandato un esempio in Php.

Io di buona lena mi sono messo a cercare ed ho trovato questo link
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/cpref/html/frlrfsystemnetsocketssocketclasstopic.asp

Dove si fa riferimento ad una connessione Socket, guarda caso la sintassi del codice in c# è del tutto simile a quella dell'esempio php

Qualcosa si è mosso insomma.
Adesso succede però che nel loro Log degli accessi non risulta nessuna chiamata da parte mia verso di loro...
Devo tenere in considereazione qual cosa d'altro dall'esempio della pagina MSDN ???

Hekp me, please !!!!

Brainkiller Profilo | Guru

>Hai ragione i webServer sono fatti per andare avanti ma putroppo
>ho a che fare con una persona non troppo avanti.

Per niente avanti a quanto pare.

>Paralndo con il tipo in questione mi ha detto che loro non sviluppano
>nulla sulla piattaforma Microsoft e
>che per questo che non passano il WSDL.

Facciamo un po' di chiarezza, WSDL non è di Microsoft. WSDL è uno Standard dei Web Services, per cui chiunque crea un web service deve aderire allo standard, se no stiamo parladno di qualcosa altro che non si chiama Web Service.
Fai vedere al tuo amico questa pagina qui del W3C organismo che costruire gli Standard per il Web:
http://www.w3.org/TR/wsdl

>Loro mi hanno suggerito di creare una connessione Socket verso
>loro e passare una richiesta.
>Per venirmi in contro mi hanno mandato un esempio in Php.

Allora, che ti diano le specifiche, a che porta ti devi collegare ? Che comandi accetta ? Altro ?
Se no è difficile primo collegarsi e secondo parlare con quella roba che stiamo chiamando erroneamente Web Service.

Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

AndreaKpr Profilo | Senior Member

>> Facciamo un po' di chiarezza, WSDL non è di Microsoft. WSDL è uno Standard dei Web Services, per cui chiunque crea un web service >>deve aderire allo standard, se no stiamo parladno di qualcosa altro che non si chiama Web Service.
>>Fai vedere al tuo amico questa pagina qui del W3C organismo che costruire gli Standard per il Web:
>>http://www.w3.org/TR/wsdl

Immaginavo una risposta del genere anche io sapevo che WSDL è uno standard.
Facciamo una piccola premessa, non è un mio amico l'implemetantore del WebServer... non so nemmeno che faccia abbia.
Per farvi capiere vi posto l'esempio Php client.

<?php
$host = "www.dev1.tracker.it";
$target = "/tracker/ws/listener.php";
$port = "80";
$timeout = "60";
$protocol = "HTTP/1.0";
$br = "\r\n";

$xml_body = '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>
$xml_body .= <!DOCTYPE trkws SYSTEM "req_readpos.dtd" >
$xml_body .= <request user="User01" psw="Psw01" action="readpos" idreq="101">
$xml_body .= <idvei>1</idvei>
$xml_body .= <datestart>200602200000</datestart>
$xml_body .= <dateend></dateend>
$xml_body .= <filter>00000000</filter>
$xml_body .= <type>C</type>
$xml_body .= </request>
$xml_body .= ';

$sk = fsockopen($host, $port, $errnum, $errstr, $timeout);
if (!is_resource($sk)) {
exit("Connessione fallita: ".$errnum." ".$errstr);
} # if
else {
$headers = "POST ".$target." ".$protocol.$br;
$headers .= "Host: ".$host.$br;
$headers .= "Content-Type: text/xml".$br;
$headers .= "Content-Length: ".strlen($xml_body).$br.$br;

fwrite($sk, $headers.$xml_body);
$dati = "";
while(!feof($sk)){
$dati .= fgets($sk, 2048);
} # while
print $dati;
fclose($sk);
}
?>

Ecco, in teoria a me basterebbe tradurlo in C#


AndreaKpr Profilo | Senior Member

Ciao, RISOLTO !!!!

Qui ho trovato del materiale che faceva a caso mio :

http://www.iceburn.it/MyItem.aspx?idx=pB/MGk5Vk6E=

Con un pò di pazienza mi sono connesso via socket al webserver php
Inviato la richiesta e lui magicamante ha risposto !!!

Bye bye !
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5