const fetchExchangeRate = async () => {try {const boundary ="WebKitFormBoundary" + Math.random().toString(36).substring(2);const formData =`--${boundary}\r\n` +`Content-Disposition: form-data; name="path"\r\n\r\n` +`/api/exchange\r\n` +`--${boundary}\r\n` +`Content-Disposition: form-data; name="params"\r\n\r\n` +`${JSON.stringify({from: fromCurrency,to: toCurrency,money: parseFloat(amount) || 1,})}\r\n` +`--${boundary}--\r\n`;const response = await Taro.request({url: `https://xxx.com`,method: "POST",header: {"content-type": `multipart/form-data; boundary=${boundary}`,},data: formData,});// 处理响应...if (response.data.code === 200 && response.data.data) {const rate = response.data.data.exchange;setExchangeRate(rate);convertCurrency(amount, rate);} else {throw new Error("API 返回错误");}} catch (error) {console.error("获取汇率失败:", error);Taro.showToast({title: "获取汇率失败,请稍后再试",icon: "none",});}};
这个修改做了以下几点改变:
- 我们手动创建了一个multipart/form-data格式的字符串。
- 使用随机生成的boundary来分隔不同的表单字段。
- 将content-type头部设置为multipart/form-data,并包含了boundary。
- 直接发送构造好的formData字符串。
这种方法应该能够模拟您描述的请求格式。请注意,这种方法可能不够优雅,但在没有FormData对象的环境中,这是一种可行的解决方案。