来自ASP.NET的SMS HTTP API调用速度较慢
对于web应用程序,我正在创建一个SMS模块,可以从应用程序发送SMS。我的SMS提供商有一个API,我可以通过HTTP调用它 API是通过XmlTextReader调用的,XmlTextReader只是从API读取XML响应 现在我的问题是:当我从网页发送短信时(基本上只是做一个HTTP请求),我需要一分钟以上才能收到短信 但是,当我从Windows控制台应用程序运行完全相同的代码时,我的短信在不到5秒的时间内到达 我已经用它做了多次测试,但并不是我的短信提供商真的很慢。 不知何故,HTTP请求会从ASP.NET引擎中延迟,而不会直接从控制台应用程序延迟。有解决办法吗 这是我调用HTTP API的方式:来自ASP.NET的SMS HTTP API调用速度较慢,asp.net,api,httpwebrequest,fiddler,xmltextreader,Asp.net,Api,Httpwebrequest,Fiddler,Xmltextreader,对于web应用程序,我正在创建一个SMS模块,可以从应用程序发送SMS。我的SMS提供商有一个API,我可以通过HTTP调用它 API是通过XmlTextReader调用的,XmlTextReader只是从API读取XML响应 现在我的问题是:当我从网页发送短信时(基本上只是做一个HTTP请求),我需要一分钟以上才能收到短信 但是,当我从Windows控制台应用程序运行完全相同的代码时,我的短信在不到5秒的时间内到达 我已经用它做了多次测试,但并不是我的短信提供商真的很慢。 不知何故,HTTP请
Dim strPostString As String = Convert.ToString(muriPostUrl) & mstrPostPath
If mblnUseSecureConnection Then
strPostString = Convert.ToString(muriSecurePostUrl) & mstrPostPath
End If
Dim strDataString As String = "username=" & mstrUsername
strDataString += "&" & "password=" & mstrPassword
strDataString += "&" & "originator=" & mstrOriginator
strDataString += "&" & "recipients=" & mstrRecipients
strDataString += "&" & "gateway=" & mstrGateway
strDataString += "&" & "reference=" & mstrReference
strDataString += "&" & "message=" & mstrMessage
If mstrType <> String.Empty Then
strDataString += "&" & "type=" & mstrType
End If
If mstrUDH <> String.Empty Then
strDataString += "&" & "udh=" & mstrUDH
End If
If Not mdtDeliveryDate = Nothing Then
Dim objDeliveryDate As New StringBuilder()
objDeliveryDate.Append(mdtDeliveryDate.Year)
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Month.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Day.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Hour.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Minute.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Second.ToString(), 2))
strDataString += "&" & "deliverydate=" & Convert.ToString(objDeliveryDate)
End If
Dim strReturnValue As String = ""
Dim xmlReader As New XmlTextReader(String.Format("{0}?{1}", strPostString, strDataString))
While xmlReader.Read()
If xmlReader.NodeType = XmlNodeType.Element Then
Select Case xmlReader.LocalName
Case "recipients"
If True Then
mintSuccessCount = Integer.Parse(xmlReader.ReadString())
strReturnValue += "recipients : " & mintSuccessCount.ToString() & vbCr & vbLf
Exit Select
End If
Case "success"
If True Then
mblnSuccess = Boolean.Parse(xmlReader.ReadString())
strReturnValue += "success : " & mblnSuccess.ToString() & vbCr & vbLf
Exit Select
End If
Case "resultcode"
If True Then
mintResultCode = Integer.Parse(xmlReader.ReadString())
strReturnValue += "resultcode : " & mintResultCode.ToString() & vbCr & vbLf
Exit Select
End If
Case "resultmessage"
If True Then
mstrResultMessage = xmlReader.ReadString()
strReturnValue += "resultmessage : " & mstrResultMessage & vbCr & vbLf
Exit Select
End If
End Select
End If
End While
Dim strPostString As String=Convert.ToString(MURIPOSTRL)&mstrPostPath
如果mblnUseSecureConnection,则
strPostString=Convert.ToString(murisecurepostrl)&mstrPostPath
如果结束
将strDataString设置为String=“username=”和mstrUsername
strDataString+=”&“&”password=“&mstrPassword
strDataString+=“&”&“发起者=“&mstrOriginator
strDataString+=“&”&“收件人=”&mstrRecipients=“&mstrRecipients
strDataString+=“&”&“gateway=“&mstrGateway
strDataString+=“&”&“reference=“&mstrReference
strDataString+=“&”&“message=”&mstrMessage
如果mstrType String.Empty,则
strDataString+=“&”&“type=”&mstrType
如果结束
如果mstrUDH String.Empty,则
strDataString+=“&”和“udh=”&mstrUDH
如果结束
如果不是mdtDeliveryDate=无,则
Dim objDeliveryDate作为新的StringBuilder()
objDeliveryDate.Append(mdtdDeliveryDate.Year)
Append(前缀(mdtDeliveryDate.Month.ToString(),2))
追加(前缀(mdtDeliveryDate.Day.ToString(),2))
追加(前缀(mdtDeliveryDate.Hour.ToString(),2))
Append(前缀(mdtDeliveryDate.Minute.ToString(),2))
Append(前缀(mdtDeliveryDate.Second.ToString(),2))
strDataString+=“&”和“deliverydate=“&Convert.ToString(objDeliveryDate)
如果结束
Dim strReturnValue As String=“”
将xmlReader设置为新的XmlTextReader(String.Format(“{0}?{1}”,strPostString,strDataString))
而xmlReader.Read()
如果xmlReader.NodeType=XmlNodeType.Element,则
选择Case xmlReader.LocalName
案例“收件人”
如果是真的话
mintSuccessCount=Integer.Parse(xmlReader.ReadString())
strReturnValue+=“收件人:”&mintSuccessCount.ToString()&vbCr&vbLf
退出选择
如果结束
“成功”案例
如果是真的话
mblnSuccess=Boolean.Parse(xmlReader.ReadString())
strReturnValue+=“success:&mblnSuccess.ToString()&vbCr&vbLf
退出选择
如果结束
案例“结果代码”
如果是真的话
mintResultCode=Integer.Parse(xmlReader.ReadString())
strReturnValue+=“resultcode:&mintResultCode.ToString()&vbCr&vbLf
退出选择
如果结束
案例“resultmessage”
如果是真的话
mstrResultMessage=xmlReader.ReadString()
strReturnValue+=“resultmessage:”&mstrResultMessage&vbCr&vbLf
退出选择
如果结束
结束选择
如果结束
结束时
此外,当从ASP.NET执行HTTP请求时,它不会出现在中,而实际的HTTP请求会发生。如何从ASP.NET引擎中跟踪HTTP fastback
我仍然不知道问题出在哪里,但我通过直接通过HttpWebRequest进行回发来解决问题。我认为问题出在while循环的某个地方。如果不提供代码(删除任何敏感信息,如登录名和密码)、API信息等,将很难为您提供帮助。。几行代码就能说出1000多个单词!我还可以建议您尝试使用LINQ to XML,尽管这与您的问题无关,但它可以大大简化您的代码built@the_drow你说得对,但没有必要粗鲁地指出这一点。@Pekka你可能是对的,这句话听起来很粗鲁,但这也是向新来者解释为什么感谢和道别会让我们在他的问题上花费更少的时间的最好方式。不过,我会尽量保持低调。我无意冒犯任何人。