收藏
回答

上个问题修改过后 报错:处理远程请求时发生错误 请问有哪些影响这个请求的?

python:

from flask import Flask, render_template, redirect, url_for, flash, request,jsonify
import mysql.connector
from mysql.connector import Error
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_cors import CORS


app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 用于 CSRF 保护
CORS(app)

# 数据库配置
db_config = {
    'host': 'localhost',
    'database': 'mydb3',
    'user': 'root',
    'password': '123456'
}

# 假设有一个名为 garbage 的表,其结构如下:
# CREATE TABLE `garbage` (
#   `id` INT AUTO_INCREMENT PRIMARY KEY,
#   `type` VARCHAR(255),
#   `name` VARCHAR(255)
# );

# 创建一个简易的表单类
class GarbageForm(FlaskForm):
    type = StringField('Type', validators=[DataRequired()])
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/')
def home():
    return "Hello, Welcome to the App!"
# 返回JSON数据
@app.route('/api/get-garbage-data', methods=['GET'])
def get_garbage_data_api():
    connection = None
    try:
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            dbcursor = connection.cursor()
            query = ("SELECT id, type, name FROM garbage")
            dbcursor.execute(query)
            data = dbcursor.fetchall()
            dbcursor.close()
            return jsonify(list(map(lambda x: {"id": x[0], "type": x[1], "name": x[2]}, data)))
    except Error as e:
        print(f"Error while connecting to MySQL: {e}")
        return jsonify({"status": "error", "message": str(e)}), 500
    finally:
        if connection is not None:
            connection.close()
# 主入口
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0',port=5000)

微信小程序端 云函数index.js 和页面 index.js 以及最后报错

云函数index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境


// 云函数入口函数
exports.main = async (event, context) => {
    const axios = require('axios');
    try {
      // 使用正确的URL替换下面的URL
      const response = await axios.get('https://2695e4eb.r21.cpolar.top/api/get-garbage-data');
      if (response.status === 200) {
        const garbageData = response.data;
  
        const db = cloud.database();
        const result = await Promise.all(garbageData.map(item => {
          return db.collection('garbage').add({
            data: {
              type: item.type,
              name: item.name,
            }
          });
        }));
  
        console.log('数据成功保存到云数据库:', result);
  
        return {
          successtrue,
          result: result,
          message'数据已成功保存到云数据库'
        };
      } else {
        console.error('获取数据失败,HTTP状态码:', response.status);
        return {
          successfalse,
          message'获取数据失败,HTTP状态码:' + response.status
        };
      }
    } catch (e) {
      console.error('处理远程请求时发生错误:', e);
      return {
        successfalse,
        message'处理远程请求时发生错误:' + e.message
      };
    }
  };
  

y页面index.js:
// pages/index/index.js
// pages/index/index.js
Page({
    data: {
      garbageList: [],
      operationStatus'',
      errorMessage'',
    },
  
    onLoadfunction(options{
      this.main();
    },
  
    mainfunction() {
      wx.cloud.callFunction({
        name'main',
        data: {}, // 传递给云函数的参数
      }).then(res => {
        if (res.result && res.result.success) {
          this.setData({
            operationStatus'success',
            garbageList: res.result.result,
            errorMessage: res.result.message || '',
          });
          console.log('数据获取并保存成功:', res.result);
        } else {
          this.setData({
            operationStatus'error',
            errorMessage: res.result ? res.result.message : '未知错误',
          });
          console.error('数据获取失败:', res.result ? res.result.message : '未知错误');
        }
      }).catch(err => {
        this.setData({
          operationStatus'error',
          errorMessage'云函数调用失败:' + err.message,
        });
        console.error('云函数调用失败:', err);
      });
    },
  


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {


  },


  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {


  },


  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {


  },


  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {


  },


  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {


  },


  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {


  },


  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {


  }
})

y页面  wxml:
<view>
  <view wx:if="{{operationStatus === 'success'}}">
    数据获取并保存成功,请在云数据库中查看。
  </view>
  <view wx:elif="{{operationStatus === 'error'}}">
    获取数据失败,请检查网络状态或联系管理员:{{errorMessage}}
  </view>
  <view wx:else>
    正在获取数据,请稍候...
  </view>
</view>

最后报错:
index.js? [sm]:31 数据获取失败: 处理远程请求时发生错误:Request failed with status code 404(env: Windows,mp,1.06.2402040; lib: 2.25.4)
(anonymous) @ index.js? [sm]:31
Promise.then (async)
main @ index.js? [sm]:18
onLoad @ index.js? [sm]:11
求解答为什么会出现这个问题  做了core  也用postman  请求过  能获得数据但是换到微信小程序就不行了????
q求大佬解答
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2024-04-06

    接口404,这还需要解答吗

    2024-04-06
    有用
    回复 4
    • 000
      000
      2024-04-06
      抱歉  我对这方面不是很理解,我用postman测试过那个url是可以接通获得信息的  但是到微信小程序那就不行了  不知道为什么
      2024-04-06
      回复
    • Mr.Zhao
      Mr.Zhao
      发表于移动端
      2024-04-07回复000
      用浏览器也是404
      2024-04-07
      回复
    • 000
      000
      发表于小程序端
      2024-04-07回复Mr.Zhao

      这是不是意味着服务端搭建出问题了?没穿透出去吗?

      2024-04-07
      回复
    • Mr.Zhao
      Mr.Zhao
      2024-04-07回复000
      不知道,资源在你手里
      2024-04-07
      回复
登录 后发表内容