1

我正在集成第三方 SMS 应用程序。要求是单击我网站上的网页上的按钮,将 SMS 发送到十个手机号码。

我们已经获得了一个 URL,我们必须在其中添加要发送的电话号码和消息。该 URL 一次只接受一个电话号码。

我有一个电话号码列表,我必须一一发送相同的消息。在遍历 list 时,我将电话号码添加到 url 并Response.Redirect(url)在每次迭代中执行。

但这只会在第一次Response.Redirect()发生时将 SMS 发送到列表中的第一个电话号码,它将浏览器带到给定 Url 指定的外部站点,并且不执行其余的 for 循环,即其余的电话号码未嵌入 url。

string[] phNos = { "91999999998", "91999999996" ,"91999999995"}; // Sample Mobile nos.

for(int i=0;i<phNos.Length;i++)
{

url = "baseurl/PushURL.fcgi?0&mobileno=" + phNos[i] + "&message="+ masg;

Response.Redirect(url);

}

我读过,Server.Transfer()但这不能用于发送到外部站点。我的要求可行吗?请帮助我如何实现它。

4

3 回答 3

5

如您所见, Response.Redirect 将用户浏览器重定向到给定的 URL。

您要做的是让您的服务器使用服务器到服务器的通信访问所需的 URL。您可以使用 WebClient 轻松完成此操作。

var cli = new System.Net.WebClient();
for(int i=0;i<phNos.Length;i++)
{
    url = "baseurl/PushURL.fcgi?0&mobileno=" + phNos[i] + "&message="+ masg;
    cli.DownloadString(url);
}

请注意,这将检索 url,有效地调用 API,顺序同步,这可能不是您想要的。如果您想并行执行,可以DownloadStringAsync在 WebClient 上使用,但您需要编写一种机制,让您等到所有请求完成。这取决于您想要什么、可能有多少个数字以及您的性能限制。

于 2012-10-06T08:57:28.497 回答
2

我建议使用 HttpWebRequest 或 WebClient

例如

for(int i=0;i<phNos.Length;i++)
{
  try
  {
    url = "baseurl/PushURL.fcgi?0&mobileno=" + phNos[i] + "&message="+ masg;

    Uri targetUri = new Uri(url);
    System.Net.HttpWebRequest hwb;
    hwb = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(targetUri);
    hwb.GetResponse();
  }
  catch (...)
  { // error handling
  }
}
于 2012-10-06T09:03:23.500 回答
1

这种过程应该由 webservice / WCF(在应用程序服务器上)执行,因此使用上面的 webclient 但是 asp.net 页面应该调用 WCF 服务来执行您需要的操作。

网页并不真正适合这种事情,即使它是可能的。

于 2012-10-06T09:25:30.807 回答