Avatar billede kulashaker Nybegynder
30. oktober 2005 - 13:30 Der er 12 kommentarer og
1 løsning

VisualStudio kan ikke connecte til webservice

Hej,

Jeg er ved at lave en C# klient der skal kunne connecte til en webservice og anvende dens funktionalitet. Webservicen kan tilføje/fjerne et album/cd til en db og søge blandt oprettede albums. Webservicen findes her: http://dbian.dk/muziklov3rz/MuzikLoverz.wsdl. Har en php klient der virker, så umiddelbart skulle det også kunne lade sig gøre i C#.

Følgende kode skulle kalde webservicens searchById funktion
test1.mzService.MuzikLov3rzService mz = new test1.mzService.MuzikLov3rzService();
test1.mzService.AlbumSummary[] sums = mz.searchById(search);

mz erklæringen giver ingen problemer, men linie2 (sums) giver følgende fejl: "An unhandled exception of type 'System.Net.WebException' occurred in system.dll

Additional information: The underlying connection was closed: Unable to connect to the remote server."

VS kan sagtens genkende og tilføje webservicen til projektet, så jeg forstår ikke fejlen.

Håber at nogen her kan hjælpe eller måske guide mig til hvor jeg kan finde mere hjælp..

Venligst,
kula
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 13:31 #1
Det skal siges at jeg har forsøgt med følgende løsningsforslag som deværre ikke hjalp:

mz.Proxy = new System.Net.WebProxy(
  "http://dummy:80", true,
  "http://dbian.dk".Split(',')
);
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 13:33 #2
Og jeg tastede desværre forkert i url'en til wsdl filen, den korrekte er:

http://dbian.dk/muziklov3rz/MuzikLov3rz.wsdl

Hvilket også er den om VS bruger.
Avatar billede arne_v Ekspert
30. oktober 2005 - 20:51 #3
hm - alt kan være galt - jeg får en meget dårlig fornemmelse når
WSDL URL returnerer Content-Type text/plain - den web service
opfører sig ikke som den skal

nede i bunden finder man:
<soap:address location="http://localhost/muziklov3rz/server.php" />

localhost ????

og resulatet er klart - den genererede stub får:

    public MuzikLov3rzService() {
        this.Url = "http://localhost/muziklov3rz/server.php";
    }

og da web servicen ikke kører på din localhost så virker den ikke.

Den PHP kode som virker udføres sikkert på samme server d.v.s. at localhost
"tilfældigvis" virker.

Kort sagt: ikke din fejl

Kontakt dem som har lavet den web service og bed dem fixe den !
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 21:35 #4
Hej Arne,

Rigtig mange tak for svaret, det giver mening - jeg kan godt se fejlen. Jeg må så indrømme at jeg selv har været med til at lave webservicen som del af et skole-projekt. Jeg har rettet stien som du påpegede.

Visual brokker sig nu over text/plain. Kan du kort forklare hvordan man i wsdl filen kan angive 'text/xml' som retur-type!? Så vidt jeg kan se skal det defineres for output af de operationer der ligger i binding-elementet..men jeg er ikke sikker på dette.

Venligst,
kula
Avatar billede arne_v Ekspert
30. oktober 2005 - 21:43 #5
det skal slet ikke angives i WSDL file

det er web serveren som skal sætte Content-Type (normalt baseret på fil extension)
Avatar billede arne_v Ekspert
30. oktober 2005 - 21:44 #6
medmindre den er dynamisk genereret - PHP/ASP/ASP.NET/JSP kan selv sætte content-type
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 21:49 #7
ah ok. Det er en standalone winform C# klient, så jeg går ud fra at serveren skal klare det.

Ved du tilfældigvis hvordan jeg på en linux Apache2 server sætter content-type for .wsdl?

Jeg ved godt det går ud over spørgsmålet og du skal nok få dine point anyways :)

Venligst,
kula
Avatar billede arne_v Ekspert
30. oktober 2005 - 21:53 #8
prøv og tilføj til conf/mime.types følgende:

text/xml xml wsdl
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 22:08 #9
Tak, det virker så vidt jeg kan se.

VS brokker sig dog nu:

Additional information: Possible SOAP version mismatch: Envelope namespace http://schemas.xmlsoap.org/wsdl/ was unexpected. Expecting http://schemas.xmlsoap.org/soap/envelope/.

Men dette er .Net WebService Studio som jeg bruger til at chekke med dog ikke glad for. Har du et råd her også?

Og du må gerne smide det som et svar :)

Venligst,
Kula
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 22:10 #10
Ny wsdl fil: http://dbian.dk/muziklov3rz/mzService.wsdl (hvis du vil kigge)
Avatar billede arne_v Ekspert
30. oktober 2005 - 22:14 #11
er det ikke kun en warning ?

men den er utilfreds med dine namespaces i WSDL filen

jeg har aldrig håndkodet WSDL (både Java og .NET genererer den automatisk) så jeg
kan ikke give præcis vejledning

men prøv da og kig på andre web services !
Avatar billede arne_v Ekspert
30. oktober 2005 - 22:19 #12
Min Apache AXIS genererer:

<wsdl:definitions
...
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

du har:

<definitions
...
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsdl="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">

og de er ihvertfald ikke ens !
Avatar billede kulashaker Nybegynder
30. oktober 2005 - 22:37 #13
Aight, jeg kigger videre på nogle webservices. Mange tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester