Momenteel heb ik een webservice door middel van SOAP draaien met een php achtergrond. Zodra ik deze aanroep door middel van c# wordt hij (toegevoegd als web reference) herkent, zie ik het juiste aantal argumenten met de juiste types en wordt de return value (boolean) goed weergegeven.
Als ik hem dan echter aanroep vanuit mijn code geeft visual studio aan dat er een extra argument moet worden meegegeven.
Dit argument is een boolean, de naam ervan is het 3e argument wat ik meegeef (ahobid) met erachter specified, oftewel ahobidspecified. Waar deze vandaan komt is onbekend.
wsdl(excuses voor de lengte):
De writeline geeft continue een false weer (overigens zal hij niet snel een true weer gaan geven aangezien het om encryptie gaat en hij uiteraard moeilijk dit als goede encryptie kan zien).
Wat het probleem echter is, nadat ik als vervangend argument voor ahobidspecified een true meegeef (zonder dat deze strikt noodzakelijk is), is dat in de error log van apache komt.
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 2 for Server::insert() in /var/www/collector/Server.php on line 31
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 3 for Server::insert() in /var/www/collector/Server.php on line 31
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 4 for Server::insert() in /var/www/collector/Server.php on line 31
Zoals je hier ziet herkent hij op de een of andere manier het 2e, 3e en 4e argument niet die ik volgens mij correct meegeef. Hij geeft niet weer dat de boolean sowieso een probleem oplevert.
Ik zit hiermee met mijn handen in het haar.
Heel Google afgestruint, meerdere wsdl's geprobeerd, verschillende visual studio installaties geprobeerd, argumenten weggehaald en toegevoegd, maar de fout met meerdere argumenten meegeven blijft plus de ahobidspecified blijft terugkomen.
Mochten jullie enig inzicht kunnen bieden, barst los.
Als ik hem dan echter aanroep vanuit mijn code geeft visual studio aan dat er een extra argument moet worden meegegeven.
Dit argument is een boolean, de naam ervan is het 3e argument wat ik meegeef (ahobid) met erachter specified, oftewel ahobidspecified. Waar deze vandaan komt is onbekend.
C#:
1
2
3
| Soapie.soapService x = new Soapie.soapService(); Boolean z = x.insert("test", "hashtest", 5, true, "test"); Console.WriteLine(z); |
wsdl(excuses voor de lengte):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://145.53.86.72/collector/service.wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://145.53.86.72/collector/service.wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://145.53.86.72/collector/service.wsdl"> <s:element name="insertRequest"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="data" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="hash" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="ahobcode" type="s:int" /> <s:element minOccurs="0" maxOccurs="1" name="iv" type="s:string" /> </s:sequence> </s:complexType> </s:element> <s:element name="insertResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="result" type="s:boolean" /> </s:sequence> </s:complexType> </s:element> </s:schema> </wsdl:types> <wsdl:message name="insertRequest"> <wsdl:part name="parameters" element="tns:insertRequest" /> </wsdl:message> <wsdl:message name="insertResponse"> <wsdl:part name="parameters" element="tns:insertResponse" /> </wsdl:message> <wsdl:portType name="servicePortType"> <wsdl:operation name="insert"> <wsdl:input message="tns:insertRequest" /> <wsdl:output message="tns:insertResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="serviceBinding" type="tns:servicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="insert"> <soap:operation soapAction="http://145.53.86.72/collector/insertRequest" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="soapService"> <wsdl:port name="servicePort" binding="tns:serviceBinding"> <soap:address location="http://145.53.86.72/collector/Server.php" /> </wsdl:port> </wsdl:service> </wsdl:definitions> |
De writeline geeft continue een false weer (overigens zal hij niet snel een true weer gaan geven aangezien het om encryptie gaat en hij uiteraard moeilijk dit als goede encryptie kan zien).
Wat het probleem echter is, nadat ik als vervangend argument voor ahobidspecified een true meegeef (zonder dat deze strikt noodzakelijk is), is dat in de error log van apache komt.
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 2 for Server::insert() in /var/www/collector/Server.php on line 31
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 3 for Server::insert() in /var/www/collector/Server.php on line 31
[Tue Dec 07 17:45:05 2010] [error] [client 10.10.10.10] PHP Warning: Missing argument 4 for Server::insert() in /var/www/collector/Server.php on line 31
Zoals je hier ziet herkent hij op de een of andere manier het 2e, 3e en 4e argument niet die ik volgens mij correct meegeef. Hij geeft niet weer dat de boolean sowieso een probleem oplevert.
Ik zit hiermee met mijn handen in het haar.
Heel Google afgestruint, meerdere wsdl's geprobeerd, verschillende visual studio installaties geprobeerd, argumenten weggehaald en toegevoegd, maar de fout met meerdere argumenten meegeven blijft plus de ahobidspecified blijft terugkomen.
Mochten jullie enig inzicht kunnen bieden, barst los.