我正在整合第三方短信应用程序。要求是在我网站的网页上单点击按钮,向10个手机号码发送短信。
我们已经提供了一个URL,我们必须在其中添加要发送的电话号码和消息。该网址一次只接受 ONE 电话号码。
我有一个电话号码列表,我必须逐个发送相同的消息。
在循环浏览列表时,我会在网址中添加一个电话号码,并在每次迭代中执行 Response.Redirect(url)
。
但是这只会在第一次发生 Response.Redirect()
时发送短信到列表中的第一个电话号码,它会将浏览器带到指定网址指定的外部网站,其余部分用于循环未执行,即其余的电话号码未嵌入网址。
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()
,但这不能用于发送到外部网站。
我的要求可行吗?请帮助我如何实现它。
答案 0 :(得分:5)
当您发现时,Response.Redirect会将用户浏览器重定向到给定的网址。
您要做的是让您的服务器使用服务器到服务器的通信来访问所需的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);
}
请注意,这将检索网址,有效地调用API,顺序和同步,这可能不是您想要的。如果要并行执行,可以在WebClient上使用DownloadStringAsync
,但是您需要编写一种机制,让您等到所有请求完成。这取决于您想要什么,可能有多少数字以及您的性能限制。
答案 1 :(得分: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
}
}
答案 2 :(得分:1)
此类过程应由webservice / WCF(在应用程序服务器上)执行,因此使用上面的webclient,但asp.net页面应调用WCF服务来执行您需要的操作。
即使有可能,网页也不是真的适合这种事情。