Problema in PHP per invio file XML - RISOLTO-

Srhike

Nuovo Utente
12 Nov 2017
6
0
1
58
Salve e complimenti per il lavoro svolto, espongo il mio problema, ho una procedura in PHP per la connessione ad un web service, il lavoro è semplice invio di un file XML e elaborazione della risposta.
L'invio va effettuato con metodo POST attribuendo il contenuto del file ad una variabile, ho provato tutti i modi possibili fread, stream_get_contents, simplexml_file_upload ma ottengo sempre un PARSE ERROR, invece se spartanamente copio e incollo il contenuto del file e lo invio tra i 2 apici il tutto funziona.....allego parte codice con errore e funzionante:

PHP:
$tmpfile = $_FILES["file1"]["tmp_name"];
    $tmpfile1 = $_FILES["file1"]["name"];
    $handle = fopen($tmpfile, "rb");
    $contents = fread($handle, filesize($tmpfile));
//    $xml= simplexml_load_file($tmpfile);
//    $contents = stream_get_contents($handle);
    fclose($handle);
}  
try {
    $wsdl_url = 'https://www.mytnt.it/ResiService/ResiServiceImpl.wsdl';
    $client = new SOAPClient($wsdl_url);
       
    $params = array( 'inputXml' => $contents,);

codice funzionante

PHP:
try {
    $wsdl_url = 'https://www.mytnt.it/ResiService/ResiServiceImpl.wsdl';
    $client = new SOAPClient($wsdl_url);
       
    $params = array( 'inputXml' => '<?xml version="1.0" encoding="utf-8"?>
<shipment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="W:ExpressLabel\Internazionale\routinglabel.xsd">
  <software>,);

Grazie per l'aiuto
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
sostituisci questa parte
PHP:
    $handle = fopen($tmpfile, "rb");
    $contents = fread($handle, filesize($tmpfile));
//    $xml= simplexml_load_file($tmpfile);
//    $contents = stream_get_contents($handle);
    fclose($handle);
con questa
PHP:
$contents = implode("", file($tmpfile));
fai sapere
 
Ultima modifica:

Srhike

Nuovo Utente
12 Nov 2017
6
0
1
58
Niente da fare, mi sa che lo avevo provato, qualunque tentativo di assegnare il contenuto del XML alla stringa mi provoca l'errore PARSE ERROR FATAL ERROR.....grazie comunque :)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
potresti pubblicare l'intero errore e la riga php che lo provoca,
quanto ti ho suggerito è usato normalmente per caricare xml con i documenti destinati al 730 precompilato e funziona
 

Srhike

Nuovo Utente
12 Nov 2017
6
0
1
58
L'errore è il seguente:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><!DOCTYPE SYSTEM ".dtd"><><ParseError><Message>FATAL ERRORFATAL ERRORWARNING</Message><LineNumber></LineNumber><LinePosition></LinePosition><SourceText></SourceText></ParseError></>

questa è la risposta di errore che ricevo ma ripeto se al posto di assegnare il contenuto alla variabile faccio un copia e incolla direttamente funziona tutto quetsa è la cosa assurda
PHP:
try {
    $wsdl_url = 'https://www.mytnt.it/ResiService/ResiServiceImpl.wsdl';
    $client = new SOAPClient($wsdl_url);
        
    $params = array( 'inputXml' => $contents,);
 $return = $client->getPDFLabel($params);
    
    $return2 = $return->getPDFLabelReturn;

    if ($return2->documentCorrect == 1 && strlen($return2->binaryDocument) > 0)

in pratica documentCorrect ritorna falso se inviato via file mi da true se lo copio direttamente
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
potresti usare notepad++ con il plugin xml per validare il file xml che stai inviando,

ho trovato il file wsdl e xsd poi ho scaricato un xml di esempio (non specifico per la richiesta) dal sito
ed ho provato ad inviarlo, segnala un errore "EX 12.34 GBP 0 piecelinegoods desc"

upload_2017-11-12_12-12-21.png

upload_2017-11-12_12-13-2.png

Codice:
REQUEST HEADERS ============
string(214) "POST /ResiService/services/ResiServiceImpl HTTP/1.1
Host: www.mytnt.it
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.4.9
Content-Type: text/xml; charset=utf-8
SOAPAction: "getPDFLabel"
Content-Length: 325"

REQUEST ====================
string(325) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://services.resi.tnt.com">
<SOAP-ENV:Body><ns1:getPDFLabel><inputXml xsi:nil="true"/></ns1:getPDFLabel></SOAP-ENV:Body></SOAP-ENV:Envelope>"

RESPONSE HEADERS ===========
string(412) "HTTP/1.1 200 OK
Date: Sun, 12 Nov 2017 11:09:05 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.41
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding,User-Agent
TNTServer: mytnt03
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/xml;charset=UTF-8
Set-Cookie: JSESSIONID-myTNT-443=HEAAKIMA; Expires=Wed, 10-Nov-2027 10:55:04 GMT; Path=/"

RESPONSE ===================
string(475) "
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soapenv:Body><p70:getPDFLabelResponse xmlns:p70="http://services.resi.tnt.com"><getPDFLabelReturn>
<documentCorrect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<outputString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</getPDFLabelReturn>
</p70:getPDFLabelResponse>
</soapenv:Body>
</soapenv:Envelope>"
 

Srhike

Nuovo Utente
12 Nov 2017
6
0
1
58
Eccomi si avevo già usato notepad++, ho installato il plugin è provato a validare ma mi da un errore non trovando il main schema resource ( W:ExpressLabel...) ma credo sia corretto dovendolo trovare sul server del WS.
Ho notato una cosa invece le dimensioni del file XML sono pari a 3305 mentre in tutte le prove che faccio la variabile $contents mi restituisce una stringa di 3308 byte, che siano questi 3 byte a creare il problema anche se non capisco dove o cosa siano....
 

Srhike

Nuovo Utente
12 Nov 2017
6
0
1
58
Evvai risolto, grazie per avermi portato sulla strada giusta.

$contents = stream_get_contents($handle, -1, 3);

Ho eliminato i 3 byte del BOM e cosi funziona alla perfezione erano quelli a creare l'errore.

Grazie ancora :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema con php per calcolo costo percentuale PHP 7
Delemir78 [PHP] Problema per ridurre delle immagini e spostare i files in cartelle PHP 5
C usare un foglio php per la creazione di un excel: piccolo problema PHP 2
EffeElle Problema per una query di aggiornamento record php PHP 35
A problema con un semplice form per un loggin in php PHP 2
H Piccola applicazione per News con Php, Xml e Flash: problema ordinamento. XML 0
T PHP: Problema legatura caratteri (per es fi) PHP 2
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Problema checkout carrello php PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
O Problema Formmail in PHP su Aruba PHP 0
WebmasterFioriniAndrea Chat e php [problema] PHP 3
L [PHP] Problema con Telegram PHP 1
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
K Help: problema con uno script di booking in php! PHP 0
A [PHP] Problema query insert [RISOLTO] PHP 14
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
M [PHP] Problema con query select PHP 2
L Problema jQuery validation AJAX (PHP 7) PHP 6
L Problema funzione mail() PHP PHP 3
S [PHP] Problema con istruzione "use" PHP 23
A Problema PHP PHP 1
T [php] problema creazione query select-where PHP 5
M [PHP] problema if PHP 3
L [PHP] Problema su codice o server PHP 5
T [PHP] problema maggiore e minore PHP 4
Cosina [PHP] fwrite problema con le parole accentate PHP 9
M [PHP] Problema search form PHP 3
F [PHP] Problema con number_format PHP 3
L [PHP] problema count messo in una funzione. PHP 1
P [PHP] Progettino CRUD di esercitazione. Problema su $_FILE. PHP 9
trattorino [PHP] problema entrata immagini insert PHP 1
C Apache Cordova problema con php Programmazione 1
trattorino problema raccapricciante php conteggio query PHP 4
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
F [PHP] Problema con array multidimensionale PHP 4
F Problema con pagine login in PHP PHP 2
M [PHP] Problema script ricezione e invio posta... PHP 1
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3

Discussioni simili