在C#中加载for循环中的URL

时间:2013-02-14 03:33:17

标签: c#

我正在向多个电话号码发送消息。 移动号码存储在一个阵列中。

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时收到成功的响应时,循环才会进入下一个移动号码,依此类推。 如果还有其他可能的机制,请建议。感谢

2 个答案:

答案 0 :(得分:2)

我认为这就是你想要做的事情:

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

答案 1 :(得分:0)

网址有长度限制。您可能会达到此限制,因此您正在丢失跟踪电话号码。您最好的选择是将您的请求分成多个特定大小的请求。

根据以下SO,最好限制您的请求,以便网址不超过2000个字符。
What is the maximum length of a URL in different browsers?