Witam
Mam aplikację do wysyłki pitów do bramki Ministerstwa Finansów napisaną w C#. Działa dobrze.
Problem w tym, że muszę zrobić kolejną ale pod Visual FoxPro i tutaj zaczęły się problemy. W żaden sposób nie mogę wysłać pitu do bramki.
Może ktoś wie jak to zrealizować.
Poniżej fragment kodu programu, który ma realizować wysyłkę:
LOCAL loGateServiceSOAP11port AS "XML Web Service"
*LOCAL loGateServiceSOAP11port AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
*__VFPWSDef__: loGateServiceSOAP11port = https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl , GateService , GateServiceSOAP11port
LOCAL loWSHandler
TRY
loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
loGateServiceSOAP11port = loWSHandler.SetupClient("https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl", "GateService", "GateServiceSOAP11port")
* Call your XML Web service here. ex: leResult = loGateServiceSOAP11port.SomeMethod()
Local gnFileHandle,nSize
LOCAL plik as VOID
gnFileHandle = FOPEN('d:\\test23.xml.xades')
nSize = FSEEK(gnFileHandle, 0, 2) && Przesuń wskaźnik na EOF
IF nSize <= 0
* Jeśli plik jest pusty, wyświetla informacje o tym.
WAIT WINDOW "Ten plik jest pusty!" NOWAIT
ELSE
FSEEK(gnFileHandle, 0, 0) && Przesuń wskaźnik na BOF
plik = FREAD(gnFileHandle, nSize)
plikB64 = STRCONV(plik,13)
thisform.writeerror(plikB64,'cotamjest.txt')
ENDIF
FCLOSE(gnFileHandle)
leResult = loGateServiceSOAP11port.sendDocument(plikB64) // tutaj dostaję błąd niewłaściwy parametr
Poniżej fragment kodu w C# który działa
eDeklaTestowy.GateServicePortTypeClient bramka = new eDeklaTestowy.GateServicePortTypeClient(@"GateServiceSOAP12port");
eDeklaTestowy.requestUPO reqUPO = new eDeklaTestowy.requestUPO();
eDeklaTestowy.requestUPOResponse reqOdp = new eDeklaTestowy.requestUPOResponse();
reqUPO.refId = nrref;
reqOdp = bramka.requestUPO(reqUPO);
string kododpowiedzi = reqOdp.status.ToString() + ' ' + reqOdp.statusOpis + "\r\n\r\n" + reqOdp.upo;
string odpowiedz = bramka.Endpoint.Address.Uri.ToString();
textBox1.Text = odpowiedz + "\r\n\r\n" + kododpowiedzi;
A to fragment w PHP, który też działa
<?php
$bramka = 'https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl';
$plik = 'test23.xml.xades' /* podpisany plik do wyslania*/
$wskplik = fopen($plik, 'rb');
$tresc = fread($wskplik, filesize($plik));
fclose($wskplik);
$tresc = base64_encode($tresc);
$soap = new SoapClient(null, array('location' => $bramka, 'uri' => ' ' ));
/* wysyłanie podpisanego dokumentu */
$wynik = $soap->sendDocument($tresc);
/* sprawdzenie statusu przy wysyłaniu dokumentu */
print '<br> Nr referencyjny dokumentu: '.$wynik[refId];
print '<br> Nr Statusu: '.$wynik[status];
print '<br> Opis statusu: '.$wynik[statusOpis];
/* sprawdzenie statusu "po czasie" dokumentu o wcześniejszym nr referencyjnym */
$wynikUPO = $soap->requestUPO($wynik[refId]);
print '<br> Nr Statusu: '.$wynikUPO[status];
print '<br> Opis statusu: '.$wynikUPO[statusOpis];
print '<br> UPO: '.$wynikUPO[upo];
?>