Keresés

Részletes keresés

Strasszer Creative Commons License 2006.08.02 0 0 13
Na. asszem megvan. Ideirom, hátha vkinek még hasznára lesz.
Keresgettem a neten, és ezt találtam:
http://www.zend.com/zend/tut/tutorial-campbell.php?article=tutorial-campbell&kind=t&id=5596&open=1&anc=0&view=1#notes
Ennek az utolsó hozzászólása adta atippet:

It's a on a different thread on this site by
Author: Mohan Kulkarni
Date: 06/01/2004 00:13:

$s = new soapclient('http://localhost/xService/CustomerData.asmx?
WSDL', 'wsdl');$s->setDefaultRpcParams(true); // This fixed the
problem$parameters['id'] = 100;$soap_proxy = $s->getProxy();

$result = $soap_proxy->GetCustomer($parameters);if (!$err =
$soap_proxy->getError()){ echo 'Result: ' . $result . "n";}else{
echo 'Error: ' . $err . "n";}

Tehát proxy-t kell létrehozni, bár azt nem tudom, miért. Igy a webservice is tudja értelmezni a paramétert.
Előzmény: Strasszer (11)
NevemTeve Creative Commons License 2006.07.25 0 0 12
Talán a 'Content-Length' nagyobb mint a valóságos...
Előzmény: Strasszer (11)
Strasszer Creative Commons License 2006.07.25 0 0 11
irtam php-ben egy hasonlót ez alapján: http://hu2.php.net/manual/hu/function.fsockopen.php. a 7. hozzászólásban van egy soap-postolás példa. de time outot mond. azért még szenvedek vele egy darabig. :)
Előzmény: NevemTeve (7)
Strasszer Creative Commons License 2006.07.25 0 0 10
jóvanna, ;-)
most ismerkedem ezekkel a dolgokkal. eddig nem volt rá szükségem.
Előzmény: NevemTeve (9)
NevemTeve Creative Commons License 2006.07.25 0 0 9
Flame (a pelenkádat ne cseréljem ki?)
Innen lehet frissíteni a wget-et: http://ftp.gnu.org/pub/gnu/wget/
Előzmény: Strasszer (8)
Strasszer Creative Commons License 2006.07.25 0 0 8
wget -d --post-file=proba.xml http://host/path

erre azt mondja, hogy unrecognized option: --post-file. és a man se beszél ilyenről.
Előzmény: NevemTeve (7)
NevemTeve Creative Commons License 2006.07.25 0 0 7
Szerintem most kellene PHP nélkül, direktben (mondjuk a wget-tel) addig próbálkozni/javítgatni, amig meg nem találod azt a verziót, amivel már elfogadja a paramétert.

wget -d --post-file=proba.xml http://host/path
Előzmény: Strasszer (6)
Strasszer Creative Commons License 2006.07.25 0 0 6
ez a kérés megy a php-től:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><ns5944:HelloWorld xmlns:ns5944="http://tempuri.org">
<nev xsi:type="xsd:string">
Strasszer
</nev>
</ns5944:HelloWorld>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Pedig ez eléggé hasonlit arra, amit a vs irt ki:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<HelloWorld xmlns="http://tempuri.org/">
<nev>string</nev>
</HelloWorld>
</soap:Body>
</soap:Envelope>
Előzmény: digicat (5)
NevemTeve Creative Commons License 2006.07.25 0 0 4
Adott esetben mindkettőt bepasztázhatnád (haladó esetben publikus tárhelyre kitehetnéd).
Előzmény: Strasszer (3)
Strasszer Creative Commons License 2006.07.25 0 0 3
A paraméter tag-ben van különbség:
A vs ezt várja:
<nev>string</nev>
a NuSOAP ezt küldi>
<nev xsi:type="xsd:string>Ezanev</nev>
Aztán különbség van az encodingban is. utf-8-at vár, és iso-8859-1-et küld.
De ezek szvsuz nem lehetnek olyan nagy különbségek.
Előzmény: NevemTeve (2)
NevemTeve Creative Commons License 2006.07.25 0 0 2
és teljesen jól megy át a request.
Nem is annyira a 'teljesen jól' meg a 'nem teljesen jól' közötti különbség a lényeg, hanem az hogy a te programodból elküldött illetve a visual-micsodából elküldött kérdés között mi a különbség, tekintve hogy az előbbi nem jó, az utóbbi meg igen.
Előzmény: Strasszer (1)
digicat Creative Commons License 2006.07.25 0 0 5
Az, hogy a megfelelő webmethod indul el, még nem jelenti azt, hogy a kérés helyes, csak annyit, hogy jól van címezve.

Nekem úgy tűnik, hogy a php által küldött kérés nem ugyanolyan, mint a .Net-es.

Egy .Net-es SOAP request így néz ki:
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <HelloWorld xmlns="http://tempuri.org/">
      <name>digicat</name>
    </HelloWorld>
  </soap:Body>
</soap:Envelope>

A php namespacei másképpen néznek ki, én ott néznék körül.

Postolni is lehet a kérést (copy-paste innen: http://localhost:8080/ws/Service.asmx?op=HelloWorld):
<form action='http://localhost:8080/ws/Service.asmx/HelloWorld' method="POST">
<input type="text" size="50" name="name">
<br/>
<input type="submit" value="Invoke" class="button">
</form>

Debughoz én ezt használom (amennyiben lokális gépen vagy):
SOAP Toolkit
Előzmény: Strasszer (1)
Strasszer Creative Commons License 2006.07.25 0 0 1
Letöltöttem az Ethereal-t, feltettem, figyeltem a csomagokat, és teljesen jól megy át a request. Azért is, mert a megszólitott webmethod indul el a másik gépen. Csak a paramétert nem olvassa ki.
(amúgy jó kis program ez az Ethereal. sok mindent meg lehet tudni a gépemről, mi mindent csinál 'csak úgy').
Előzmény: NevemTeve (0)
NevemTeve Creative Commons License 2006.07.24 0 0 0
Arra figyeltem fel, hogy ha php-ből hivom soap-pal, akkor a paramétereket nem veszi át. Ha vs2k3-ból, akkor meg igen.

Akkor talán nézd meg, mi megy a dróton olyankor, amikor működik a dolog (pl Ethereal).
Előzmény: Strasszer (-)
Strasszer Creative Commons License 2006.07.20 0 0 topiknyitó
Az első 3 hozzászólás a php topicban található.
Az a lényeg, hogy egy .net-ben irt webservice egyik metódusát kellene meghivnom. Erre a NuSOAP osztályokat használom. Arra figyeltem fel, hogy ha php-ből hivom soap-pal, akkor a paramétereket nem veszi át. Ha vs2k3-ból, akkor meg igen.
Akkor jöjjön a mai blog: :))


Ma egész nap ezzel szenvedtem.
Átirtam vs2003-ban a példawebservice-ben a helloworld metódust:
[WebMethod]
public string HelloWorld(string nev)
{
return "Hello World: " + nev;
}


A request ez:
POST /CCS_Webservice/CCSSelectService.asmx HTTP/1.0
Host: bp-inf-policy
User-Agent: NuSOAP/0.7.2 (1.43)
Content-Type: text/xml; charset=ISO-8859-1
SOAPAction: "http://tempuri.org/HelloWorld"
Content-Length: 506

<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope

SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body>
<ns8891:HelloWorld xmlns:ns8891="http://tempuri.org">
<nev xsi:type="xsd:string">
GZs
</nev>
</ns8891:HelloWorld>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ha debug-ban futtatom, akkor látom a vs2000-ben, hogy a nev paraméter értéke null. emiatt csak a 'Hello World' stringet adja vissza.

Tud vki segiteni?

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!