Bash 华为hilink(E3372)web api删除短信返回错误125003
这是我的第一个问题,我不是母语人士,请不要对我太苛刻:) 我试图用api读/发短信是可以的,但当涉及到删除部分时,它总是返回错误125005,我认为这与会话和令牌有关 互联网上的信息非常有限 关于如何使用api的示例 以下是scrpt:Bash 华为hilink(E3372)web api删除短信返回错误125003,bash,api,curl,Bash,Api,Curl,这是我的第一个问题,我不是母语人士,请不要对我太苛刻:) 我试图用api读/发短信是可以的,但当涉及到删除部分时,它总是返回错误125005,我认为这与会话和令牌有关 互联网上的信息非常有限 关于如何使用api的示例 以下是scrpt: #!/bin/bash MODEM_IP="192.168.9.1" curl -s -X GET "http://$MODEM_IP/api/webserver/SesTokInfo" > ses_tok.xml COOKIE=`grep "Ses
#!/bin/bash
MODEM_IP="192.168.9.1"
curl -s -X GET "http://$MODEM_IP/api/webserver/SesTokInfo" > ses_tok.xml
COOKIE=`grep "SessionID=""ses_tok.xml | cut -b 10-147`
TOKEN=`grep "TokInfo" ses_tok.xml | cut -b 10-41`
curl -s -X POST "http://$MODEM_IP/api/sms/sms-list" -H "Cookie: $COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: text/xml" -d "<request><PageIndex>1</PageIndex><ReadCount>20</ReadCount><BoxType>1</BoxType><SortType>0</SortType><Ascending>0</Ascending><UnreadPreferred>1</UnreadPreferred></request>" > modem_status.xml
#cat modem_status.xml
#read index
readarray -t array_index <<< "$(xmlstarlet sel -t -m "//Index" -v . -n modem_status.xml)"
rm -f result_status.xml
touch result_status.xml
for ((i=0; i<${#array_index[@]}; i++ ))
do
index[$i]=$(printf ${array_index[$i]} | tr -d '\n\r ')
#printf "${index[$i]} "
printf "\n${index[$i]}\n" >> result_status.xml
curl -s -X POST "http://$MODEM_IP/api/sms/delete-sms" -H "Cookie: $COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: text/xml" -d "<?xml version="1.0" encoding="UTF-8"?><request><Index>${index[$i]}</Index></request>" >> result_status.xml
done
cat result_status.xml
也许,我错过了一些我以前没有注意到的东西
TIA可能太晚了,但我也遇到了同样的问题,也许这也有助于其他用户寻找它 在我的例子中,令牌/cookie在delete命令之前就已经过期了。 我不认为这是一个时间组件,但更像是组合只对一个API调用有效 我在delete命令之前得到了一个新的token/cookie,现在它对我起作用了。希望这有帮助 干杯
克里斯我遇到了同样的错误,在你要求删除短信的情况下,我要求重新启动。调制解调器应具有基于令牌的验证连接,保存在cookie中以执行任何操作 我用了三个步骤 1) 首先是连接e3372
<?xml version="1.0" encoding="UTF-8"?><request><dataswitch>1</dataswitch></request>
3) 重新启动调制解调器
<?xml version="1.0" encoding="UTF-8"?><request><Control>1</Control></request>
1
通过/api/device/control路径 由于这是
Huawei 125003
的最高结果,我将在点击此错误时添加我的发现。
在我拥有的B315s上,RequestVerificationToken只能使用一次。
每个POST请求都应该有一个响应头_urequestVerificationToken,您可以将此值用于下一个请求。只需注意,对/api/user/login的响应将返回许多您可以使用的令牌,它们由散列符号分隔
此外,请保持cookies的最新状态,成功登录后,从/api/webserver/SesTokInfo保存的SesInfo将发生更改。您必须先登录
def _getTokens(self):
"""Get access tokens"""
try:
xml = self._getXml("/api/webserver/SesTokInfo")
except (URLError, socket.timeout):
return ("", "")
else:
return (xml.findtext("SesInfo", ""), xml.findtext("TokInfo", ""))
def _updateTokens(self):
session, postToken = self._getTokens()
self._opener.addheaders = [("__RequestVerificationToken", postToken),
("Cookie", session)]
<?xml version="1.0" encoding="UTF-8"?><request><Control>1</Control></request>