【问题标题】:sending an SMS with C# and the Huawei E8372 dongle使用 C# 和华为 E8372 加密狗发送短信
【发布时间】:2018-12-21 05:27:57
【问题描述】:

我尝试了很多方法来用我的华为 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:我知道using 中的HttpClient 不正确。但这是我的应用程序必须做的唯一一个请求。

编辑: 这是发送我的浏览器的请求(使用此浏览器):
标题:

 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/ 

正文:

 <?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>

所以这与我的应用程序的请求非常相似。

【问题讨论】:

  • "...不要为我的应用程序工作..." - 这些信息并没有真正的帮助。它没有说明究竟是什么不起作用,即您是否在任何地方收到任何错误消息,您是否尝试调试问题以确保它确实完成了预期的事情。
  • 这是真正的问题,我没有任何错误消息。每件事看起来都很完美。但调制解调器不发送短信。我发现了一些关于将这个调制解调器与 bash 或 python 一起使用的问题,但是当我尝试像它们一样时它是一样的。没有错误信息,也没有收到短信
  • 你说它在你的电脑浏览器中工作(手机真的有可以发短信的网络服务器吗?哇)所以在浏览器中打开它,打开浏览器开发者工具(chrome:f12键)打开网络选项卡并从头到尾发出请求,包括任何登录。使用浏览器 Deb 工具分析发送的内容、标头、数据、cookie 等,并找出代码出错的地方。 Web 服务器可能不关心浏览器(用户代理)等,但准确地重新创建请求,它应该可以工作
  • 这正是我所做的(它不是电话,它是一个带 SIM 卡的 USB。所以,只是一个调制解调器,通常使用它与浏览器一起使用)我将编辑我的帖子与浏览器请求。
  • 是否可以使用 teamviewer 或其他工具连接您的开发环境?如果是,请提供详细信息

标签: c# .net http-post huawei-mobile-services


【解决方案1】:

取自 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

【讨论】:

  • 感谢您的回答,很抱歉抽空回答,在第一种情况下,我在您回答后向api/webserver/SesTokInfo 的一个请求中恢复了会话和令牌,我在第一个请求中进行会话,我在第二个请求中将其放入 cookie 中以获取令牌,并且在我将 cookie 和令牌放入 post 请求中后,api/sms/send-sms 但即使答案成功仍然没有任何改变,我没有收到我的短信
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2014-01-18
  • 2020-10-25
  • 2020-07-04
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多