Diskuze: Dotaz na katastr nemovitostí
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
https://www.freeformatter.com/…tor-xsd.html
Take hlasi, ze xml je ok + Found XSD reference 'vyhledat_v29.xsd' but unable to
load it as it is not an absolute URL. Only checking for well-formedness
(schemaLocation="vyhledat_v29.xsd")
Ta php chybova hlaska vypada, ze znamena, ze nedostal xml.
Napada mne, jen, jestli netreba zadat nejake parametry vyhledavani? Jinak netusim, proc si s tim neporadil. Treba davas spatne heslo nebo hlavicku zpravy a tak na tu url vrati soap prazdny vysledek.
google = wsd SoapClient php example
try {
$opts = array(
'http' => array(
'user_agent' => 'PHPSoapClient'
)
);
$context = stream_context_create($opts);
$wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
$soapClientOptions = array(
'stream_context' => $context,
'cache_wsdl' => WSDL_CACHE_NONE
);
$client = new SoapClient($wsdlUrl, $soapClientOptions);
$checkVatParameters = array(
'countryCode' => 'DK',
'vatNumber' => '47458714'
);
$result = $client->checkVat($checkVatParameters);
print_r($result);
}
catch(Exception $e) {
echo $e->getMessage();
}
// ------- Parameters version (try this first)
$params = array(
'request' => array(
'Header' => array(
'Token' => 'hello'
),
'Parameters' => array(
'DeviceID' => 12345,
'SourceScreen' => 12345,
'Language' => 'E',
'LocalDateTime' => '2015-05-20T11:59:29.910Z',
'TicketID' => 12345,
'PayScreenAttributeID' => 12345,
'InputValue' => '123456789',
'PaymentAmount' => 0,
'POSReceiptCustomer' => '?',
'POSReceiptMerchant' => '?'
)
)
);
$wsdl_path = "http://192.168.1.1/TestSite/TestService.asmx?wsdl";
$soapClient = new SoapClient($wsdl_path, array('trace' => 1));
$response = $soapClient->ProcessTransaction($params);
https://www.php.net/…apclient.php
try {
$arrContextOptions=array("ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false,'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT));
$options = array(
'soap_version'=>SOAP_1_2,
'exceptions'=>true,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE,
'stream_context' => stream_context_create($arrContextOptions)
);
$client = new SoapClient('https://url/dir/file.wsdl', $options);
} catch (Exception $e) {
echo "<h2>Exception Error!</h2>";
echo $e->getMessage();
}
Ja bych tam asi pro tem prvni pokus hlavicku treba uplne zrusil, nechal tam
jen
array('trace' => 1) a pozdeji to doplnis o strem_context a pouzijes na to tu
funkci stream_context_create
array('trace' => 1, "stream_context" => $context)
resp, takhle, zkusil bych nejdriv array('trace' => 1) a pak postupne pridavat dalsi parametry, dokud to chodi. Treba existuje nejaka free verze stranky a verze, kde je nutne mit neco konkretne spravne nastavene v hlavicce, aby to odpovidalo. A kdyz je hlavicka spatne, tak to samozrejme ignoruje, neposle soubor. Prazdny soubor nema zadnou xml znacku, takze neni rozpoznan jako xml.
Musí se na to úplně jinak chlapci, kdyby někdo chtěl pomoc, můžu poslat link, teď jsem to právě úspěšně implementoval.
Ahoj, to by mne hodne zajimalo. Muzes poslat ten link, prosim?
DS
Čau, prvním problémem je, že WSDP 2.9 aktuálně používá
SOAP_1_1
, ne 1_2
Další problém byl v tom, že oni chtějí request v určitém formátu co odpovídá tomu WSDL souboru, a jaký WSDL soubor záleží na službě kterou poptáváš v tom requestu. V tvém případě chceš aby tvůj request vyhovoval souboru https://wsdptrial.cuzk.cz/…dat_v29.wsdl
Koukal jsem se jak to posílají třeba C# programatoři, ti vytvoří objekt a tomu objektu nastaví sadu properties stejně jak je to specifikované v tom XSD souboru - např. https://katastr.cuzk.cz/…tavy_v29.xsd , pak nakonec tento objekt pošlou v requestu.
Naštěstí v PHP existuje classa SoapVar(), ta dokáže
"překonvertovat" XSD string a poslat to v těle SOAP requestu.
Takže normálně otevřeš tu dokumentaci "WSDP popis webovych sluzeb pro
uzivatele" a najdeš kapitolu "8.1 Příloha 1: Komunikace klient –
server" a najdeš jak má vypadat vzorový request na ten svůj endpoint https://wsdptrial.cuzk.cz/…/2.9/sestavy
Tento vzorový request ve formátu XSD(XML) pak zkopčíš, upravíš parametry a celej string dáš jako první parametr do SoapVar(), ten výsledek se pak dá poslat do SOAP requestu
Stejně se pak musí poslat hlavičky, a tam mají v dokumentaci chybu -
místo <wsse:Security soapenv:mustUnderstand="1" ...
musí být
<wsse:Security SOAP-ENV:mustUnderstand="1" ...
Uploadnul jsem obalující třídu a hlavni skript sem: https://github.com/…nh/cuzk-wsdp
Test page: cuzk-wsdp.phamtheanh.eu
Pokud bys chtel s neci pomoct, tak napis 🖖 ja informace sddilim, ne jako nekteri ze starsi generace programatorů, kteří rádi informace shromažďují jako trpaslící zlato a pak na nich sedí exůtci
Ahoj,
díky moc za nabídku ... dostanu se k tomu po dovolené.
D
Zobrazeno 11 zpráv z 11.