IT星空
IT星空
  • 发布:2025-07-29 11:44
  • 更新:2025-07-29 14:08
  • 阅读:191

使用uniCloud.httpclient.request发送请求一直超时无法获取response,但目标服务器实际是响应了

分类:uniCloud

使用uniCloud.httpclient.request发送请求一直超时无法获取目标服务器发来的response,但目标服务器实际是正确接收了我的请求而且正确响应了。
之前一直好好地,代码也没动,最近这几天请求:
const res2 = await uniCloud.httpclient.request("http://域名/openApi/doOrder", {
method: "POST",
headers: header,
timeout: 10000,
data: param1,
contentType: 'json',
dataType: 'json'
});
直接报下边的错误:
[uni-pay-co/ac1cc3151753758012105110221/65248ms/ERROR] 异步处理错误: Error: Socket timeout
at Socket.s (/code/index.js:33:35096)
at Socket.emit (node:events:529:35)
at Socket._onTimeout (node:net:598:8)
at listOnTimeout (node:internal/timers:569:17)
at process.processTimers (node:internal/timers:512:7) {
code: 'ERR_SOCKET_TIMEOUT',
timeout: 10500,
name: 'ResponseError',
data: undefined,
path: '/openApi/doOrder',
status: -1,
headers: {},
res: {
status: -1,
statusCode: -1,
statusMessage: null,
headers: {},
size: 0,
aborted: false,
rt: 66998,
keepAliveSocket: false,
data: undefined,
requestUrls: [ 'http://open.yisuopen.com/openApi/doOrder' ],
timing: null,
remoteAddress: '47.106.125.152',
remotePort: 80,
socketHandledRequests: 1,
socketHandledResponses: 0
}
}
为什么我敢断定目标服务器是正确响应了呢,因为和目标服务器技术沟通过,我还是担心,又用postman测试的,一样的数据,postman就能正确响应:
{
"code": 0,
"msg": "成功",
"data": {
"orderNo": "STKD175375971511XXX",
"typeName": "申通快递",
"type": 5,
"waybillNo": "77336913729XXXX"
}
}

2025-07-29 11:44 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

timeout: 10000, 改成 timeout: 60000, 试试

  • IT星空 (作者)

    不行,你看下:

    [uni-pay-co/ac1cc31f1753786638689-34458/318222ms/ERROR] 异步处理错误: Error: Socket timeout

    at Socket.s (/code/index.js:33:35096)

    at Socket.emit (node:events:529:35)

    at Socket._onTimeout (node:net:598:8)

    at listOnTimeout (node:internal/timers:569:17)

    at process.processTimers (node:internal/timers:512:7) {

    code: 'ERR_SOCKET_TIMEOUT',

    timeout: 50500,

    name: 'ResponseError',

    data: undefined,

    path: '/openApi/doOrder',

    status: -1,

    headers: {},

    res: {

    status: -1,

    statusCode: -1,

    statusMessage: null,

    headers: {},

    size: 0,

    aborted: false,

    rt: 319639,

    keepAliveSocket: false,

    data: undefined,

    requestUrls: [ 'http://open.yisuopen.com/openApi/doOrder' ],

    timing: null,

    remoteAddress: '47.106.125.152',

    remotePort: 80,

    socketHandledRequests: 1,

    socketHandledResponses: 0

    }

    }

    2025-07-29 19:10

  • IT星空 (作者)

    目标服务器技术查看响应是正常的,还给我发了:

    {"msg":"成功","code":0,"data":{"orderNo":"STKD175371484017253","typeName":"申通快递","type":5,"waybillNo":"773369048475131"}}

    我想是不是响应被阿里云服务器拦截了,有没有这种可能?

    2025-07-29 19:18

  • DCloud_uniCloud_VK

    回复 IT星空: 你现在在云函数里请求这个接口100%报这个错误吗?

    2025-07-29 19:23

  • IT星空 (作者)

    回复 DCloud_uniCloud_VK: 前几天好好地,现在100%报错,我还专门删了uni-pay-co云函数,把nodejs版本改为16又重新上传还是不行。文件是支付模块uni-pay-co的notify目录里的js文件,逻辑是当用户支付成功后调用快递系统的api下单寄快递。

    下一步我想把这个下快递功能专门新建一个云函数测试下能否正常,还是不行的话我在用简化版的uniCloud.request方法测试下。

    2025-07-29 23:20

要回复问题请先登录注册