0

我正在向多个电话号码发送消息。手机号码存储在一个数组中。

string phNums =  "91999999999,9199999998....";.
string[] phNos = phNums.Split(',');

但是消息并没有到达所有的收件人,主要是到达数组末尾附近的数字。消息通过 SMS 服务提供商提供的 URL 发送,其中嵌入了电话号码和消息。

 for (int i = 0; i < phNos.Length; i++)
  {
    url = @"http://aaa.bbb.ccc.dd/HTTPMTAPI?User=abc&Password=pqr&FromAddr=xyzSMS&DestNo=" + phNos[i] + "&msg=" + message;
    Uri targetUri1 = new Uri(url);
    System.Net.HttpWebRequest hwb1;
    hwb1 = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(targetUri1);
    hwb1.GetResponse();
  }

作为替代,我也使用了 Webclient() 但仍然不能保证成功的消息传递。

  for (int i = 0; i < phNos.Length; i++)
  {
    WebClient cli= new WebClient();
  url = @"http://aaa.bbb.ccc.dd/HTTPMTAPI?User=abc&Password=pqr&FromAddr=xyzSMS&DestNo=" + phNos[i] + "&msg=" + message;
    cli.DownloadString(url);
  }

如何确保不跳过消息传递。就像只有在下载 URL 时收到成功响应一样,循环应该继续到下一个手机号码,依此类推。如果还有其他可能的机制,请提出建议。谢谢

4

2 回答 2

2

I think this is what you want to do:

for (int i = 0; i < phNos.Length; i++)
{
    url = @"http://aaa.bbb.ccc.dd/HTTPMTAPI?User=abc&Password=pqr&FromAddr=xyzSMS&DestNo=" + phNos[i] + "&msg=" + message;
    Uri targetUri1 = new Uri(url);
    System.Net.HttpWebRequest hwb1;
    hwb1 = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(targetUri1);
    System.Net.HttpWebResponse response = hwb1.GetResponse();
    if (response != null)
        {
            int status = (int)response.StatusCode; // this changes the status 
                                                   // from text response to the
                                                   // number, like 404
            if (status == 404//or anything else you want to test//)
               {
                    // put your retry logic here, make sure you add a way to break 
                    // so you dont infinitely loop if the service is down or something
               }
        }
}
于 2013-02-14T05:04:29.560 回答
0

URL 有长度限制。您可能会达到此限制,因此您会丢失尾随的电话号码。您最好的选择是将您的请求分成一定大小的多个请求。

根据以下 SO,最好限制您的请求,以使 url 不超过 2000 个字符。
不同浏览器中 URL 的最大长度是多少?

于 2013-02-14T03:37:11.193 回答