我有一个只有一个端点API的设备(smsmmachine)。我的目标是去听asyncronous设备沟通,谁该设备做自动以及一个API调用参数的响应发送短信为例。
我尝试使用以下代码(片段),其中我传递了user/password参数:
useEffect(() => {
const fetchData = async () => {
try{
const response = await fetch(`goip_get_status.html`, {
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Basic ' + btoa(`${username}:${password}`)
}})
const json= await response.json();
if (response.ok && response.status === 200) {
console.log("Connection made ", response);
} else if (response.status >= 400 && response.status < 500 && response.status !== 429)
{
console.log("Client side error ", response);
}
console.log("response:",response);
console.log("json:",json);
const parsedData = JSON.parse(json.data);
setData((data) => [...data, parsedData]);
}
catch (error) {
console.log("error: ",error);
}
};
fetchData();
}, [data]);
但我收到"访问受限";消息。
最后,我认为这不是正确的方法。有人有类似的问题吗?
我找到解决办法了。
我看到设备,在多次尝试登录失败后,封锁IP几分钟,所以设备响应"访问受限"。
为了解决这个问题,我还添加了
params: {
username: username,
password: password,
},
(有正确的用户名和密码)传递给fetch的参数如下:
const response = await fetch(`goip_get_status.html`, {
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Basic ' + btoa(`${username}:${password}`)
}
params: {
username: username,
password: password,
},
}