Autor Zpráva
quatzael
Profil
Podle dokumentace se snažím naprogramovat WS, ale mám problém se zadáním parametrů.

V dokumentaci mám nějakou takovou funkci:

FUNKCE getInfo
_____________________________________________________________________

Parametr: login
Hodnota: name=[your name], password=[your password], code Hodnota: code=[your code]
/*pozn. mezi jednotlivými subparamtry v originální dokumentaci nejsou čárky, ale jsou vypsány pod sebou*/

Parametr: xmlData
Hodnota: file content
_____________________________________________________________________

V php mám podle toho tenhle kód:
$login = array('name'=>'my_name','password'=>'heslo','code'=>12345);  
$xml = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/../xml/data.xml');                           
$soapClient = new SoapClient("https://domena.cz/webservices/functions?wsdl"); 
  
try {
  $request = $soapClient->getInfo($login,$xml); 
} 
catch (SOAPFault $result) {
    echo $result->getMessage();
}   

Ale nefubguje to, hlásí mi to chybu:
SOAP-ERROR: Encoding: object has no 'login' property

Do toho parametru login dávám pole, a to je asi špatně. Nevím jak to tam chtějí, v dokumentaci je to jen uvedené jak to píšu tady. Má se tam snad dát nějak objekt nebo json? Vůbec nevím jak se to dělá (jaký je úzus), když v dokumentaci vůbec neuvádí co si tam vlastně pod tím paramtrem představují.

Můžete prosím někdo poradit?
Kubo2
Profil
quatzael:

Ukáž nám definičný súbor https://domena.cz/webservices/functions?wsdl, potom budeme možno o niečo múdrejší.
quatzael
Profil
Kubo2:
To za prvý ani nemůžu, protože to je tak trochu TOP SECRET.
Navíc ho ani nemám k dispozici přímo, ale mám k němu přístup pouze z té "uvedené adresy" a můžu se k němu dostat pouze ze serveru pomocí phpka. Přístup je omezen podle IP adresy..

Lze to nějak vůbec stáhnout pomocí PHP? Zkouším to klasicky pomocí funkce file_get_contents(), ale hlásí to chybu:

Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0



Kubo2:
Jenže já to na tom serveru ani v tý konfiguraci zřejmě jinak nastavit nemůžu (hosting zřejmě neumožňuje)
Taps
Profil
quatzael:
Já to mám např. takto
$requestParams = array(
    'USER_NAME' => 'uzivatel',
    'PASSWORD' => 'heslo'
   
);

$client = new SoapClient("http://server/SPSWS.asmx?WSDL&op=KonvertujDokumentNaPDFA");
$response = $client->KonvertujDokumentNaPDFA($requestParams);
file_put_contents('dokument.pdf',$response->KonvertujDokumentNaPDFAResult->FILE);
Pro stažení můžeš zkusit
<?
 simplexml_load_file();
 ?> 
 
nebo curl
Kubo2
Profil
quatzael:

file_get_contents() neuspeje, pretože na hostingu ti zakázali používať wrappery http: a https: nastavením allow_url_fopen = Off. Čo je veľká škoda, pretože najlepšie môžeš webovej službe porozumieť práve z jej WSDL definície.
quatzael
Profil
Tak se mi to wsdl nakonec podařilo stáhnout běžným způsobem přes prohlížeč. Musel jsem tam x-krát odklepnout, že chci vstoupit bez certifikátu nebo co..

Takhle to nějak vypadá.

<xs:complexType name="user_password">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="name" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="0" name="password" type="xs:decimal"/>
<xs:element maxOccurs="1" minOccurs="0" name="code" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="LoginChoice">
<xs:choice maxOccurs="1" minOccurs="1">
<xs:element maxOccurs="1" minOccurs="0" name="login_a" type="spolecne:user_password"/>
<xs:element maxOccurs="1" minOccurs="0" name="login_b" type="spolecne:pin"/>
</xs:choice>
</xs:complexType>

<xs:element name="getInfo">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="login" type="spolecne:LoginChoice"/>
<xs:element maxOccurs="1" minOccurs="1" name="xmlData" type="xs:string"/>
<xs:annotation>
<xs:documentation>
Top Secret Text
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>



Je to samozřejmě jen výtažek, který se týká té funkce a toho přihlašování.


Taps:
No to tam dáváš pole úplně stejně jako já.

Tady v mým případě to vypadá, že to asi chce multidimenzionální pole.
Keeehi
Profil
No a nemůže být problém právě v tom, že ten certifikát toho serveru je neplatný? Jak vypnout ověřování. Ale v tom případě je pak celkem jedno, zda to běží na http nebo na https. Takže pokud tomá http verzi, stačilo by se ptát rovnou tam, bezpečnost bude na stejně nízké úrovni.
A nebo opravit certifikáty. Problém s certifikáty však může býtjaku tebe tak i na jejich straně.
quatzael
Profil
Keeehi:
S certifikátem si myslím, že problém nebude. Jiným to frčí. A tuhle WS obstarává celý tým ajťáků.

Hlásí to tu chybu se špatným parametrem login, tak chyba bude asi logicky tam..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: