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

私はこれがあなたがやりたいことだと思います:

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 に答える