我尝试了很多事情用我的华为E8372发送短信,但没有任何效果。
这是我的最后一个代码:
var SMS = $"<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>0033*********</Phone></Phones><Sca></Sca><Content>byserver</Content><Length>8</Length><Reserved>1</Reserved><Date>{date.ToString("yyyy-MM-dd HH:mm:ss")}</Date></request>";
//var SMS = $"<request><Index>-1</Index><Phones><Phone>003364*******</Phone></Phones><Sca></Sca><Content>by server</Content><Length>9</Length><Reserved>1</Reserved><Date>{date.ToString("yyyy-MM-dd HH:mm:ss")}</Date></request>";
var baseAddress = new Uri("http://192.168.8.1");
using (var handler = new HttpClientHandler { UseCookies = false })
{
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
var message = new HttpRequestMessage(HttpMethod.Post, "/api/sms/send-sms");
//message.Content = new FormUrlEncodedContent(paramse);
message.Content = new StringContent(SMS);
message.Headers.Add("__RequestVerificationToken", token);
message.Headers.Add("Accept", "*/*");
message.Headers.Add("Accept-Encoding", "gzip, deflate");
//message.Headers.Add("Accept-Language", "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3");
message.Headers.Add("Connection", "keep-alive");
//message.Headers.TryAddWithoutValidation("Content-Length", SMS.Length.ToString());
//message.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
message.Headers.Add("Cookie", sessionID);
//message.Headers.Add("Host","192.168.12.116");
//message.Headers.Add("Referer", "http://192.168.12.116:61640/Service1.svc/TryThis");
message.Headers.Add("User-Agent", ".NET Framework Test Client");
//message.Headers.Add("X-Requested-With", "XMLHttpRequest");
}
}
我总是有200个响应代码。但是我从来没有收到我的消息。我尝试多次更改标题,也多次更改正文。而且我知道调制解调器可以正常工作,因为在浏览器中使用接口时可以发送短信。而且我像这样的接口发送请求。但这不适用于我的应用程序。
可能是由于我不知道的安全性或类似原因。但是因为这个问题,我已经有6天被封锁了,我非常绝望。
如果您有一个解决方案或一条线索,我将不胜感激。
先感谢您。
P.S:我知道HttpClient
中的using
是不正确的。但这是我的应用程序必须执行的唯一请求。
编辑:
这是发送我的浏览器的请求(与此浏览器一起工作):
标头:
Host: 192.168.8.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: */*
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.8.1/html/smsinbox.html?smssent
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
__RequestVerificationToken: 1W7DEw3V5rnPxeg01xqF13kgaPRRtO2d
X-Requested-With: XMLHttpRequest
Content-Length: 234
Connection: keep-alive
Cookie: SessionID=1ALPnbTT+SRZMWfPCfVruPnbm0tC4xHWwiumuySJr9AjTaZYzVK4SGYjNmWOEg7lQDsID+RimQ7HIPa3ZRWipdEXIM9APIP8i+K5JUq2yUAhjpZQuCp+Hx+eCQW5tpm/
body:
<?xml version="1.0" encoding="UTF-8"?><request><Index>-1</Index><Phones><Phone>0033646******</Phone></Phones><Sca></Sca><Content>test browser</Content><Length>12</Length><Reserved>1</Reserved><Date>2018-12-21 07:13:04</Date></request>
因此,这实际上与我的应用程序中的请求相似。
答案 0 :(得分:0)
摘自SO帖子Sending SMS messages via bash script using a Huawei E8372 hilink
看起来您要运行的每个命令都必须首先获得一个新令牌
由于我没有华为E8372,因此无法测试,但是您应该能够将上面链接的帖子答案中的curl
语句转换为C#。
该帖子的答案:
下面获得了一个新令牌,存储为ADM_TOKEN
curl -s -X GET "http://$MODEM_IP/api/webserver/SesTokInfo" \
-H "Cookie: $SESSION_ID" > ses_tok2.xml
ADM_TOKEN=`grep "TokInfo" ses_tok2.xml | cut -b 10-41`
然后您可以使用该ADM_TOKEN运行下一个命令
curl -v http://192.168.8.1/api/sms/send-sms \
-H "Cookie: $SESSION_ID" \
-H "__RequestVerificationToken: $ADM_TOKEN" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "Accept: */*" \
-H "Referer: http://192.168.8.1/html/smsinbox.html" \
-H 'X-Requested-With: XMLHttpRequest' \
-H "Connection: keep-alive" \
-H "Origin: http://192.168.8.1" \
--data $message_data \
--dump-header send_result.txt