Bash 华为hilink(E3372)web api删除短信返回错误125003

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

这是我的第一个问题,我不是母语人士,请不要对我太苛刻:)

我试图用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 "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>