我正在使用Nativescript-Vue制作本机应用程序,在我的第一个组件中,我启动了一个简单的发布请求,该请求可以正常工作(我在桌面版本上进行了测试)。但是出于我忽略的原因,响应存在问题。我的答复显示,请求已成功发送参数,但是我收到了status:null和data:“”。你们中有些人知道我该如何解决吗?
对于正在阅读本主题的任何人,谢谢您的时间,任何潜在的线索都是可观的:)
axios({
method: 'post',
url: url,
data: querystring.stringify({
grant_type: config.grant_type,
username: config.API_username,
password: config.API_password,
APIKeys: config.API_key
}),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.then((response) => {
alert(JSON.stringify(response, null, 4));
})
.catch((error) => {
alert(JSON.stringify(error, null, 4));
});
答案 0 :(得分:0)
@RandyCasburn感谢您的答复Randy Casburn先生,我没有从API中获得任何错误。 我与一位同事讨论了这个主题,他告诉我,使用您提供给我的代码,API不会收到请求。他认为这是因为您将内容类型设置为application / json,所以我们的API仅接受application / x-www-form-urlencoded,之后我尝试通过将内容类型更改为application / x-www-表单编码,但我没有回应,我不确定是否收到请求。 我们使用Express API,调用是通过axios进行的。 我的本机应用程序代码与桌面浏览器的代码相同,但是我从本机应用程序中删除了该代码。
答案 1 :(得分:0)
如果您正在android设备上测试您的API,请确保您的发布请求返回某些内容(即使只是一条成功消息)。在IOS上是不需要的,但是由于Android上的某种原因(如果没有数据返回),请求将返回Request failed with status code null
。
答案 2 :(得分:0)
我有同样的问题。我将axios版本更新为 0.19.0 。问题解决了
答案 3 :(得分:-1)
您好,Vikman,欢迎来到SO。
您一直感到困惑,因为您试图同时使用来自三个不同平台的三个不同API。这就是我的意思:
querystring
对象alert()
函数首先,我建议您完全遵循NativeScript API来简化生活。您不需要2000行的Axios即可保存一些按键。 Axios文档已经说服您必须使用querystring.stringify()
方法将查询参数与请求一起传递。不幸的是,querystring
对象是NodeJS对象,在Android / iOS运行时中可能可用,也可能不可用。因此,消除Axios,让您的生活更轻松。
最后,请确保您没有使用仅在浏览器(例如alert()
)或NodeJS(而不是本机运行时)中工作的代码。
为确保发布成功,请使用此处记录的NativeScript HTTP API:
https://docs.nativescript.org/ns-framework-modules/http
将代码更改为此:
const httpModule = require("http");
const dialogs = require("tns-core-modules/ui/dialogs");
httpModule.request({
url: url,
method: "POST",
headers: { "Content-Type": "application/json" },
content: JSON.stringify({
grant_type: config.grant_type,
username: config.API_username,
password: config.API_password,
APIKeys: config.API_key
})
}).then((response) => {
const result = response.content.toJSON();
dialogs.alert(result);
}, (e) => {
dialogs.alert(JSON.stringify(e));
});
这将在您的NativeScript环境中工作。
编辑:在阅读了您对设备和alert
的评论后,我编辑了代码以适应这种情况。