2016-05-18 4 views
0

J'essaie d'envoyer une photo de l'application mobile Titanium Appcelerator à un serveur Web.Titanium XHR - Erreur d'analyse XML pendant XHR.SEND pendant ce temps n'utilisant pas l'analyseur XML sciemment

J'utilise l'exemple suivant:

var upload_token = "hi! I am a token!"; 

var content = ''; 
var boundary = '---------------------------170062046428149'; 

content += '--'+ boundary + '\r\n'; 
content += 'Content-Disposition: form-data; name="uploadToken"\r\n'; 
content += '\r\n'; 
content += upload_token + '\r\n'; 
content += '--'+ boundary + '\r\n'; 
content += 'Content-Disposition: form-data; name="myNickname"\r\n'; 
content += '\r\n'; 
content += myNickname+'\r\n'; 
content += '--'+ boundary + '\r\n'; 

content += 'Content-Disposition: form-data; name="nativePath"\r\n'; 
content += '\r\n'; 
content += 'file:///storage/emulated/0/Pictures/app-name/tia-217296905.jpg\r\n'; 
content += '--'+ boundary + '\r\n'; 

content += 'Content-Disposition: form-data; name="fileContent"; filename="/appicon.png"\r\n'; 
content += 'Content-Type: binary/octet-stream\r\n'; 
content += '\r\n'; 

var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, '/appicon.png'); 
var full_content = Ti.createBuffer({value: content}); 
var fileStream = Ti.Stream.createStream({ source : file.read(), mode : Titanium.Stream.MODE_READ}); 
var content_size = full_content.append(Ti.Stream.readAll(fileStream)); 
Ti.API.debug('Appended File Size : ' + content_size); // ==> same as file.size 

content = '\r\n'; 
content += '--'+ boundary + '--\r\n'; 
full_content.append(Ti.createBuffer({value : content})); 

xhr = Ti.Network.createHTTPClient(); 
var send_data = full_content.toBlob(); 

var url = 'http://website.address/api/push_photo.php'; 
xhr.onload = function(e){ 
    console.log(e); 
    alert("DONE!"); 
}; 
xhr.onerror = function(e){ 
    console.log(e); 
}; 
xhr.open('POST', url); 
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); 
xhr.send({image:send_data}); 

Tout fonctionne comme prévu, le fichier est transmis au serveur, et l'application Titanium dans mon téléphone mobile dit « DONE! ». Ce qui signifie que xhr.onload a été déclenché ...

Ma question concerne l'erreur je suis capable de voir dans la console développeur:

[ERREUR]: XMLModule: (KrollRuntimeThread) [13440, 13649] erreur d'analyse XML [eRREUR]: XMLModule: org.xml.sax.SAXParseException: inattendue jeton (position: TEXTE Array [eRREUR]: XMLModule: ([eRREUR]: XMLModule: [... UPL @ 7: 1 dans [email protected]) [ERROR]: XMLModule: à org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:146) [ERREUR] : XMLModule: at javax.xml.parsers.DocumentBuilder.parse (DocumentBuilder.java:107) [ERROR]: XMLModule: à ti.modules.titanium.xml.XMLModule.parse (XMLModule.java:82) [ERREUR ]: XMLModule: à ti.modules.titanium.xml.XMLModule.parse (XMLModule.java:68) [ERROR]: XMLModule: à ti.modules.titanium.network.TiHTTPClient.getResponseXML (TiHTTPClient.java: 562) [eRREUR]: XMLModule: à ti.modules.titanium.network.HTTPClientProxy.getResponseXML (HTTPClientProxy.java:129) [eRREUR]: XMLModule: à org.appcelerator.kroll.runtime.v8.V8Object. nativeCallProperty (Méthode native) [ERREUR]: XMLModule: à org.appcelerator.kroll.runtime.v8.V8Object.callProperty (V8Object.java:73) [ERREUR]: XMLModule: à org.appcelerator.kroll.KrollProxy.handleMessage (KrollProxy.java:1155) [ERREUR] : XMLModule: à android.os.Handler.dispatchMessage (Handler.java:95) [ERROR]: XMLModule: à android.os.Looper.loop (Looper.java:137) [ERROR]: XMLModule: à [KrollRuntimeThread] [7,13656] Erreur lors de l'analyse XML [ERREUR]: TiHTTPClient: : Inattendu token (position: TEXT Array [ERREUR]: TiHTTPClient: ([ERREUR]: TiHTTPClient: [upl ... @ 7: 1 à [email protected]) [ERREUR]: TiHTTPClient: à org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:146) [ERREUR]: TiHTTPClient: à javax.xml.parsers.DocumentBuilder.parse (DocumentBuilder.java:107) [ERREUR]: TiHTTPClient: à ti.modules.titanium.xml.XMLModule.parse (XMLModule.java:82) [ERROR]: TiHTTPClient: à ti.modules.titanium.xml.XMLModule.parse (XMLModule.java:68) [ERROR]: TiHTTPClient: à ti.modules.titanium.network.TiHTTPClient.getResponseXML (TiHTTPClient.java:562) [eRREUR ]: TiHTTPClient: à ti.modules.titanium.network.HTTPClientProxy.getResponseXML (HTTPClientProxy.java:129) [ERROR]: TiHTTPClient: à org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty (native Method) [ERROR]: TiHTTPClient: à org.appcelerator.kroll.runtime.v8.V8Object.callProperty (V8Object.java:73) [ERREUR]: TiHTTPClient: à org.appcelerator.kroll.KrollProxy .handleMessage (KrollProxy.java:1155) [ERREUR]: TiHTTPClient: à android.os.Handler.dispatchMessage (Handler.java:95) [ERREUR]: TiHTTPClient: at android.os.Looper.loop (Looper. java: 137) [eRREUR]: TiHTTPClient: à org.appcelerator.kroll.KrollRuntime $ KrollRuntimeThread.run (KrollRuntime.java:118) [WARN]: TiBlob: (KrollRuntimeThread) [24,13680] getFile pas pris en charge pour les types blob sans fichier. [WARN]: TiBlob: (KrollRuntimeThread) [8,13688] getNativePath non pris en charge pour types blob sans fichier. [INFO]:
{"code": 0, "source": {"responseText": "Tableau \ n (\ n [uploadToken] => salut! Je suis un jeton! \ N [monNom] => raholl \ n [nativePath] => file: ///storage/emulated/0/Pictures/app-name/tia-217296905.jpg \ n "\ n", "emplacement": "http: // **** ****/api/push_photo.php "," status ": 200," domaine ": null," readyState ": 4," tlsVersion ": 0," connectionType ":" POST "," validatesSecureCertificate ": faux, "statusText": "OK", "nom d'utilisateur": null, "mot de passe": null, "allResponseHeaders": "null: HTTP/1.1 OK \ nConnexion: Keep-Alive \ nContenu-Longueur: 166 \ nContenu-Type : text/html \ nDate: mer, 18 mai 2016 02:10:12 GMT \ nKeep-Alive: timeout = 5, max = 100 \ nServeur: Apache/2.2.22 (Debian) \ nVariable: Accepter-Encodage \ nX-Android-Reçu-Millis: 1463537845271 \ nX-Android-Sent-Millis: 1463 537844807 \ nX-Powered-By: PHP/5.5.33-1 ~ pointdeb + 7.1 \ n "," responseXML ": null," responseData ": {" fichier ": null," chemin_natif ": null," hauteur ": 0, "length": 166, "width": 0, "mimeType": "text/html", "nomapi": "Ti.Blob", "text": "Array \ n (\ n [uploadToken] = > salut! Je suis un jeton! \ N [myNickname] => raholl \ n
[nativePath] => fichier: ///storage/emulated/0/Pictures/app-name/tia-217296905.jpg \ n) \ n "," type ": 2," bubbleParent ": true}," autoRedirect ": vrai," apiName ":" Ti.Network.HTTPClient "," autoEncodeUrl ": true," connecté ": false," bubbleParent ": true , "_ événements": { "disposehandle": {}}}, "succès": true} [INFO]: ALERTE: (KrollRuntimeThread) [8,13696] fait

Quelle ligne est cette « erreur d'analyse XML [ERREUR] "venant de? Comment résoudre ce problème?

Tout semble fonctionner très bien, mais l'erreur semble assez grave ...

Toutes les idées seraient appréciées.

Répondre

0

LOL était

console.log(e); 

dans le

xhr.onload = function(e){ 
divider("ONLOAD DONE"); 
//console.log(JSON.stringify(e)); 
//console.log(e); 
alert("done"); 
}; 

Sans console.log, aucune erreur apparaît et tout fonctionne bien. Probablement e était objet vide ou non valide pour la journalisation ...