uni-app unicloud 使用腾讯云无法在云对象中发起http请求 一直超时

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app unicloud 使用腾讯云无法在云对象中发起http请求 一直超时

示例代码:

let url = `https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=${access_token}&type=agent_config`;  

let result = await uniCloud.httpclient.request(url, {  
    dataType: "json",  
});

操作步骤:

let url = `https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=${access_token}&type=agent_config`;  

let result = await uniCloud.httpclient.request(url, {
    dataType: "json",
});

unicloud 使用腾讯云, 开启固定IP

预期结果:

正常获取请求结果

实际结果:

卡在请求的代码那里, 直到超时

bug描述:

在云对象中使用uniCloud.httpclient.request 无法发送请求, 一直超时, 换过不同的url, 都不能连接, 显示超时, 环境中开启了固定IP, 调整超时时间, 会一直卡在请求这里, 直到超时

相关链接:


1 回复

针对你提到的在使用uni-app和unicloud时,在云对象中发起HTTP请求到腾讯云服务时出现超时的问题,这通常与网络配置、权限设置或代码实现有关。以下是一个基于uniCloud云函数,使用腾讯云的SDK发起HTTP请求的示例代码,以及可能的排查思路。

示例代码

首先,确保你已经在腾讯云上创建了相应的服务,并获取了必要的访问密钥(SecretId和SecretKey)。

// 云函数入口文件
const cloud = require('wx-server-sdk')
const TencentCloud = require('tencentcloud-sdk-nodejs')
const http = require('http')

cloud.init()

const vpcClient = new TencentCloud.vpc.v20170312.Client({
  credential: {
    secretId: 'YOUR_SECRET_ID',
    secretKey: 'YOUR_SECRET_KEY'
  },
  region: 'YOUR_REGION',
  profile: {
    httpProfile: {
      endpoint: "vpc.tencentcloudapi.com",
    },
  },
});

exports.main = async (event, context) => {
  try {
    // 示例:查询VPC列表
    const params = {
      "Limit": 10,
    };

    const resp = await vpcClient.DescribeVpcs(params);
    console.log(resp);

    // 如果需要发起普通HTTP请求,可以使用Node.js原生http模块
    const options = {
      hostname: 'api.example.com',
      port: 80,
      path: '/path',
      method: 'GET',
    };

    const req = http.request(options, (res) => {
      let data = '';

      // A chunk of data has been received.
      res.on('data', (chunk) => {
        data += chunk;
      });

      // The whole response has been received.
      res.on('end', () => {
        console.log(data);
      });
    });

    req.on('error', (e) => {
      console.error(`Problem with request: ${e.message}`);
    });

    // end the request
    req.end();

    return {
      success: true,
      message: 'VPC list queried and HTTP request sent',
    };
  } catch (error) {
    console.error(error);
    return {
      success: false,
      message: error.message,
    };
  }
};

排查思路

  1. 网络配置:确保uniCloud云函数所在的网络环境能够访问腾讯云API网关。如果是私有部署,检查VPC、子网和路由设置。

  2. 权限设置:检查SecretId和SecretKey是否正确,以及是否有足够的权限执行相应的API调用。

  3. API端点:确认API端点和版本是否正确。

  4. 超时设置:在HTTP请求中,可以尝试增加超时时间,看是否能解决问题。

  5. 日志记录:增加日志记录,捕捉更详细的错误信息,帮助定位问题。

通过上述代码和排查思路,希望能帮助你解决在uni-app和unicloud中使用腾讯云时发起HTTP请求超时的问题。如果问题依旧存在,建议联系腾讯云客服或查阅相关文档获取更多帮助。

回到顶部