【问题标题】:Javascript fetch response cutoffJavascript获取响应截止
【发布时间】:2016-08-21 23:35:23
【问题描述】:

我开始学习 react-native,在 Android 上使用 fetch 时遇到了一些问题。

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);
}

请求已正确发送,但未完整显示答案:

(**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

如您所见,JSON 对象并不完整。在浏览器中使用其他方法发送相同的请求会正确返回 JSON。

我想知道这是 fetch 还是 Android 的实际问题。

我尝试在 fetch 中将 size 和 timeout 参数设置为 0,但它什么也没做。

编辑:也尝试使用同步获取而不是异步,效果相同:

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);
}

也试过了:

console.log(responseJson);

console.log(responseJson.json());

编辑以进一步澄清:

使用 response.json() 时,响应显示为 json(正如预期的那样),但仍然不完整。

【问题讨论】:

    标签: javascript android json react-native fetch


    【解决方案1】:

    编辑 :: 问题在于 console.log 限制了它在控制台中显示的字符数。

    快速提问:

    如果你用邮递员打端点,你能得到完整的 json 对象吗?很可能是您的服务器/服务切断了消息。

    最后,(我看到你在上面提到了这一点)但是当我知道这是表示法类型时,我总是在响应 obj 中使用 'json' 方法 - 它应该返回一个承诺。

    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);
    }
    

    如果你得到邮递员(或提琴手撰写)的完整回复,请告诉我会发生什么。

    【讨论】:

    • 从来没有用过邮递员,只是倾向于使用chrome的开发工具网络东西。在 chrome 中,请求以完整的 JSON 响应,但我没有使用 fetch ,使用 webix 的 webix.ajax().post() 方法。编辑:至于您推荐的更改,我已经尝试过了,它的响应方式与我提到的我也使用过的 response.json() 类似。它将输出打印为 json 而不是常规文本,但仍会中断。
    • 如果你在你做console.log的地方放了一个断点,你能评估对象看它是否完整吗?我不知道“(加载更多数据之前)”部分中有多少数据 - 但是,如果数据量很大,您可能会遇到控制台的字符限制。记录。
    • 就是这样。我在核素的 logcat 控制台中使用 atom 并没有显示全部内容。对 json 对象做了一些操作,它处理得很好。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2023-03-20
    • 2018-07-25
    • 2022-10-13
    相关资源
    最近更新 更多