首页 > 解决方案 > 当响应很长时,React native fetch() 在 Android 上抛出“网络请求失败”

问题描述

fetch()直到一个月前,它在 iOS 和 Android 上都运行良好。我发现当响应很长时会抛出Network request failed错误:

Network request failed
onerror
    whatwg-fetch.js:504:29
dispatchEvent
    event-target.js:172:43
setReadyState
    XMLHttpRequest.js:576:29
__didCompleteResponse
    XMLHttpRequest.js:392:25
<unknown>
    XMLHttpRequest.js:505:8
emit
    EventEmitter.js:191:12
__callFunction
    MessageQueue.js:344:47
<unknown>
    MessageQueue.js:107:26
__guard
    MessageQueue.js:291:8
callFunctionReturnFlushedQueue
    MessageQueue.js:106:17

这就是我设置获取请求的方式:

const URLENCODED_HEADER = {
  'Accept': 'application/json',
  'Content-Type': 'application/x-www-form-urlencoded',
}

async function getToken() {
  try {
    let response = await fetch(SERVER_URL+'/secure/token', {
      credentials: 'include'
    });
    let responseJson = await response.json();
    return responseJson.result
  } catch(error) {
    throw error;
  }
}

async function doLogin(secureInfo) {
  formBody = encodeParameters(secureInfo)
  try {
    let response = await fetch(SERVER_URL+'/user/login', {
      method: "POST",
      headers: URLENCODED_HEADER,
      body: formBody,
      credentials: 'include'
    });
    let responseJson = await response.json();
    return responseJson;
  } catch(error) {
    console.error(error);
    throw error;
  }
}

以下是我能够成功回复的一些回复:

1.

err_no:0 结果:BVV7IZVLOYgROXXc

2.

err_no:0
result:{
    login_id:xxxx@gmail.com
    user_name:""
    email: xxx@gmail.com
    user_id:11
    login_type:1
}

然而,其他较长的响应,例如下面的响应,导致“网络请求失败”:

{  
   "err_no":0,
   "result":[  
      {  
         "article_id":299,
         "user_id":11,
         "title":"society",
         "content":"",
         "text_content":"\n",
         "tags":"[\"Society\"]",
         "used_articles":"{}",
         "citation_text":"",
         "prompt":"",
         "alternative_title":"",
         "alternative_prompt":"",
         "alternative_cnt":0,
         "image_url":"",
         "created":"2018-07-26 18:28:17",
         "update_time":"2018-07-26 18:28:27"
      }
   ]
}

(从网络平台记录)

什么可能导致这种情况,我应该如何解决它?

标签: androidreact-nativefetch

解决方案


推荐阅读