fetch返回ReadableStream作为错误体。我如何获取该流的内容?

博士博士

我正在使用ODATA NPM包通过REST调用获取ODATA。(我假设这基本上只是用于获取的包装器)。

好吧,我正在使用await / try / catch来捕获错误,并且我想获取错误的内容。一定有比我正在做的更好的方法:

如果我这样做:

const setOperations = (async (jobNum) => {
    let reply = {}
    let payload = { ...OpData }
    payload.JobNum = jobNum
    try {
        reply = await o(JOBURL, options).post('JobOpers', payload).query()
    } catch (error) {
        console.log(`Error Code: ${error.status}`)
        console.log(`Error URL: ${error.url}`)
        const reader = error.body.getReader()
        const text =  await reader.read()
        console.log(`Error body: ${text.value}`)
    }
    return reply
})

然后显示的text.value是一个Uint8Array字节流:

Error Code: 400
ERPStore.js:219 Error URL: https://pwsepicorapp.mycorp.com/ERP10.2Test/api/v1/Erp.BO.JobEntrySvc/JobOpers
ERPStore.js:222 Error body: 123,34,72,116,116,112,83,116,97,116,117,115,34,58,52,48,48,44,34,82,101,97,115,111,110,80,104,114,97,115,101,34,58,34,82,69,83,84,32,65,80,73,32,69,120,99,101,112,116,105,111,110,34,44,34,69,114,114,111,114,77,101,115,115,97,103,101,34,58,34,79,112,101,114,97,116,105,111,110,32,114,101,102,101,114,101,110,99,101,115,32,105,110,118,97,108,105,100,32,118,97,108,117,101,46,34,44,34,69,114,114,111,114,84,121,112,101,34,58,34,73,99,101,46,67,111,109,109,111,110,46,66,117,115,105,110,101,115,115,79,98,106,101,99,116,69,120,99,101,112,116,105,111,110,34,44,34,69,114,114,111,114,68,101,116,97,105,108,115,34,58,91,123,34,77,101,115,115,97,103,101,34,58,34,79,112,101,114,97,116,105,111,110,32,114,101,102,101,114,101,110,99,101,115,32,105,110,118,97,108,105,100,32,118,97,108,117,101,46,34,44,34,84,121,112,101,34,58,34,69,114,114,111,114,34,44,34,84,97,98,108,101,34,58,34,74,111,98,79,112,101,114,34,44,34,80,114,111,103,114,97,109,34,58,34,69,112,105,99,111,114,46,82,69,83,84,65,112,105,46,100,108,108,34,44,34,77,101,116,104,111,100,34,58,34,84,104,114,111,119,85,112,100,97,116,101,69,120,116,69,120,99,101,112,116,105,111,110,34,44,34,67,111,108,117,109,110,78,117,109,98,101,114,34,58,49,55,44,34,76,105,110,101,78,117,109,98,101,114,34,58,52,48,125,93,125

我想看到的是一个JSON对象,因为这是此字节流所对应的。

博士博士

我需要再次等待以读取错误:

/**
 * EPICOR invoke ODATA Post command
 * @param {string} serviceBO - Busines Object that provides service
 * @param {string} args - the ODATA command and any arguments
 * @param {json} payload - and data to send in POST
 * @return {string} The next job number
 * @public
 */
const post = (async (serviceBO, args, payload) => {
    let reply = {}
    const url = SERVERURL + serviceBO
    const options = window.STORE.getState().identity.options
    try {
        reply = await o(url, options).post(args, payload).query()
    } catch (error) {
        console.log(`Error Code: ${error.status}`)
        console.log(`Error URL: ${error.url}`)
        const json = await error.json()
        const body  = JSON.stringify(json, ' ', 4)
        console.log(`Error body: ${body}`)
        return error
    }
    return reply
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我该如何清理这种返回类型以获取新的语言?

我该如何返回记录不可用的错误消息?

Python循环不断返回错误,我该如何修改?

使用Moq,我该如何模拟改变其作为参数的流的方法?

我该如何解决无法获取/错误的nodejs

使用 fetch 时无法获取 ReadableStream

使用ReadableStream作为请求主体获取

如果我从流中提取某些内容,该流中是否不再包含我提取的内容?

如何从 fetch 请求中的 readableStream 响应中获取可下载文件

从体流返回结构

我该如何返回指向char数组中间内容的指针?

为什么 fetch() 使用 ReadableStream 作为响应主体?

我该如何编写Java正则表达式来获取<script>标记的内容?

当 API 位于 {} 而不是 [] 时,我如何从该 API 中获取内容

我如何读取该对象的内容

我有2个文档,我该如何写一个将输出作为单个文档返回的查询

在加载函数时遇到问题,几乎我定义的所有内容都会返回找不到该对象的错误?

我使用数据库ID作为对象键,但是在获取该键的值时遇到错误

我如何从formData获取内容?

如何从该网站获取JSONP返回格式

我在几个方法上遇到多个“错误:缺少返回语句”错误。我做错了什么,该如何解决?

Angular 6 - 登录注册用户时返回错误 - 我该如何解决?

如何获取文件内容作为textarea值?

如何获取JavaScript文件的内容作为变量

我该如何单击div中的元素并获取该元素的文本内容,该文本内容是从循环到DOM的数组中的对象派生的

如何获取从fetch()Promise返回的数据?

如何从表中检索行并将其值设置为json数组并获取该json数组作为返回值

运行apt-get更新时,发生“无法获取”错误。我该如何解决?

Kubernetes仪表板CrashLoopBackOff,获取错误“连接:主机无路由”,我该如何解决?