2016-04-27 10 views
2

Ich fange an zu lernen, reagiert native und stieß auf einige Probleme beim Verwenden von fetch auf Android.Javascript Fetch Antwort Cutoff

try { 
    let response = await fetch(REQUEST_URL, { 
     method: "POST", 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify({ 
      ***parameters*** 
     }) 
    }); 
    let responseJson = await response; 
    if(responseJson){ 
     // console.log(responseJson); 
     console.log(responseJson.text()); 
     // console.log(responseJson.json()); 
    } 
} catch(error) { 
    console.error(error); 
} 

Die Anforderung wird korrekt gesendet, aber die Antwort ist nicht in seiner Gesamtheit gezeigt:

(**loads more data before**){"ID":"779","DESCRICAO":"ZXCVB","CLIENTENUMERO":"10133","CLIENTENOME":"Lda 1","TREGISTO":"2015\\/11\\/24 09:34:15","TTERMO":"","SITUACAO":"C","TIPO":"P","NOTIFICACOES":"email","NOTIFI_TAREFA":"","ESFORCOS_TOT":"4","TEMPOGASTO_TOT":"0:01:44","TEMPOGASTO_PES":"0:01:44","PROJECTO":"New Products","USERNAME":"AT","UREGISTO":"S","EMCURSO":"0","TULTIMO":"2015\\/12\\/18 20:37:56","EQUIPA":"","NIVEL":"AVISAX"},{"ID":"783","DESCRICAO":"123","CLIENTENUMERO":"10133","CLIENTENOME":"Lda 1","TREGISTO":"2015\\/11\\/24 09:43:26","TTERMO":"","SITUACAO":"C","TIPO":"P","NOTIFICAC 

Wie Sie sehen können, das JSON-Objekt nicht vollständig ist. Senden der gleichen Anfrage mit anderen Methoden in einem Browser gibt die JSON korrekt zurück.

Ich frage mich, ob dies ein tatsächliches Problem mit Fetch oder mit Android ist.

Ich habe versucht, Größe und Timeout-Parameter auf 0 im Abruf, aber es hat nichts getan.

Edit: versuchte auch synchron holen statt async verwenden, mit dem gleichen Effekt:

fetch(REQUEST_URL, { 
    method: "POST", 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     ***params*** 
    }) 
}) 
.then((response) => response.text()) 
.then((responseText) => { 
    console.log(responseText); 
}) 
.catch((error) => { 
    console.warn(error); 
} 

auch versucht:

console.log(responseJson); 

und

console.log(responseJson.json()); 

Bearbeiten zur weiteren Klärung:

Bei der Verwendung von response.json() wird die Antwort als json (wie zu erwarten) angezeigt, ist aber immer noch unvollständig.

Antwort

1

Bearbeiten :: Issue war mit console.log begrenzt die Anzahl der Zeichen in der Konsole angezeigt.

Kurze Frage:

Können Sie das JSON-Objekt in seiner Gesamtheit erhalten, wenn Sie den Endpunkt mit Postbote schlagen? Es könnte sehr gut dein Server/Dienst sein, der die Nachricht abschneidet.

Schließlich (und ich sehe, Sie erwähnten dies oben), aber ich verwende immer die 'Json' Methode aus der Antwort obj, wenn ich weiß, dass der Notationstyp ist - die eine Verheißung zurückgeben sollte.

fetch(REQUEST_URL, { 
    method: "POST", 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     ***params*** 
    }) 
}) 
//get the response and execute .json 
.then((r) => r.json()) 
//then listen for the json promise 
.then((j) => { 
    console.log(j); 
}) 
.catch((error) => { 
    console.warn(error); 
} 

Lassen Sie mich wissen, was passiert und wenn Sie die volle Antwort mit Postboten (oder Fiddler komponieren) bekommen.

+0

Niemals Postbote verwendet, neigen dazu, Chrome Dev Tool Netzwerk-Sache zu verwenden. In Chrome reagiert die Anfrage mit dem vollständigen JSON, aber ich verwende dort nicht den Abruf, indem ich die Methode webix.ajax(). Post() von Webix verwende. EDIT: wie für Ihre empfohlenen Änderungen, habe ich versucht, und es reagiert in ähnlicher Weise wie response.json(), dass ich erwähnte, dass ich auch verwendet. Es druckt die Ausgabe als json anstelle von normalem Text, aber es schneidet immer noch ab. –

+0

Wenn Sie in console.log einen Haltepunkt einfügen, können Sie das Objekt auswerten, um zu sehen, ob es ganz ist? Ich weiß nicht, wie viele Daten in dem Teil "(** lädt mehr Daten vor **)" - aber, wenn es eine große Menge ist, ist es möglich, dass Sie mit Console.log auf eine Zeichenbeschränkung stoßen. – user7811

+0

Das war es. Ich benutzte Atom mit der Logcat-Konsole von nuclide und es zeigte einfach nicht die ganze Sache. Habe einige Operationen mit dem Json-Objekt gemacht und es geht vollkommen in Ordnung. Prost. –