uni-app uni.request 组件不返回请求http状态
uni-app uni.request 组件不返回请求http状态
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | |
HBuilderX | 3.98 | |
手机系统 | 版本号 | |
Android | Android 14 | |
手机厂商 | 手机机型 | |
小米 | k60 |
示例代码:
class QLibClass {
requestTask = null as RequestTask | null
Post(url : string, params : UTSJSONObject | null) : Promise<UTSJSONObject> {
const reqHeader = {
"Content-Type": "application/json"
};
return new Promise((resolve, reject) => {
this.requestTask = uni.request<UTSJSONObject>({
url: url,
method:'POST',
data: params,
header: reqHeader,
timeout: 6000,
sslVerify: false,
withCredentials: false,
firstIpv4: false,
success: (res) => {
console.log(res)
resolve(res.data as UTSJSONObject)
},
fail(err) {
console.log(err)
//const err = '网络错误,请联系管理员'
reject(JSON.stringify(err))
}
});
})
}
}
export const QLib =new QLibClass();
操作步骤:
<script>
import { QLib } from "@/utils/QLib.uts"
export default {
data() {
return {
AccountName: '',
AccountPwd: "",
}
},
methods: {
DoLogin() {
const params : UTSJSONObject=JSON.parseObject('{"name":"Tom"}')!;
QLib.Post("https://baidu.com/666",params).then(r => {
console.log(r.getString('code'));
})
}
}
}
</script>
预期结果:
UniError(errSubject='uni-request', errCode=100002, errMsg='error message invalid json', data=null, cause='null',HttpStatus=404)
实际结果:
UniError(errSubject='uni-request', errCode=100002, errMsg='error message invalid json', data=null, cause='null')
bug描述:
uni.request 请求接口返回404状态码 无法识别 返回错误 UniError(errSubject='uni-request', errCode=100002, errMsg='error message invalid json', data=null, cause='null')
更多关于uni-app uni.request 组件不返回请求http状态的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app uni.request 组件不返回请求http状态的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在使用 uni-app
的 uni.request
进行网络请求时,如果发现请求没有返回 HTTP 状态码,可能有以下几种原因和解决方法:
1. 请求未成功发送
确保请求成功发送到服务器。可以通过以下方式检查:
- 检查请求的 URL 是否正确。
- 检查网络连接是否正常。
- 使用浏览器的开发者工具或抓包工具(如 Charles、Fiddler)查看请求是否成功发送。
2. 服务器未正确响应
确保服务器正确处理了请求并返回了状态码。可以通过以下方式检查:
- 检查服务器的日志,确保请求被正确处理。
- 确保服务器返回了正确的响应状态码(如 200、404、500 等)。
3. uni.request
的使用问题
确保正确使用 uni.request
。以下是一个基本的示例:
uni.request({
url: 'https://example.com/api', // 请求的 URL
method: 'GET', // 请求方法
success: (res) => {
console.log('请求成功:', res);
console.log('状态码:', res.statusCode); // HTTP 状态码
console.log('响应数据:', res.data); // 响应数据
},
fail: (err) => {
console.log('请求失败:', err);
},
complete: () => {
console.log('请求完成');
}
});
4. 跨域问题
如果请求的 URL 与当前页面的域名不同,可能会遇到跨域问题。确保服务器允许跨域请求,或者使用代理服务器解决跨域问题。
5. 超时设置
如果请求超时,可能会导致请求失败。可以设置 timeout
参数来调整超时时间:
uni.request({
url: 'https://example.com/api',
method: 'GET',
timeout: 10000, // 10秒超时
success: (res) => {
console.log('请求成功:', res);
},
fail: (err) => {
console.log('请求失败:', err);
}
});
6. 调试和日志
在开发过程中,可以通过 console.log
或 uni.showToast
等方式输出调试信息,帮助定位问题。
7. 检查 uni-app
版本
确保使用的是最新版本的 uni-app
,以避免已知的 bug。可以通过 npm update
或 yarn upgrade
更新依赖。
8. 检查 uni.request
的实现
如果以上方法都无法解决问题,可以检查 uni.request
的实现是否有问题,或者尝试使用其他网络请求库(如 axios
)进行对比测试。
示例代码
以下是一个完整的示例代码,展示了如何使用 uni.request
并获取 HTTP 状态码:
uni.request({
url: 'https://example.com/api',
method: 'GET',
success: (res) => {
console.log('请求成功:', res);
console.log('状态码:', res.statusCode);
console.log('响应数据:', res.data);
},
fail: (err) => {
console.log('请求失败:', err);
},
complete: () => {
console.log('请求完成');
}
});