Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自ASP.NET的SMS HTTP API调用速度较慢_Asp.net_Api_Httpwebrequest_Fiddler_Xmltextreader - Fatal编程技术网

来自ASP.NET的SMS 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请

对于web应用程序,我正在创建一个SMS模块,可以从应用程序发送SMS。我的SMS提供商有一个API,我可以通过HTTP调用它

API是通过XmlTextReader调用的,XmlTextReader只是从API读取XML响应

现在我的问题是:当我从网页发送短信时(基本上只是做一个HTTP请求),我需要一分钟以上才能收到短信

但是,当我从Windows控制台应用程序运行完全相同的代码时,我的短信在不到5秒的时间内到达

我已经用它做了多次测试,但并不是我的短信提供商真的很慢。 不知何故,HTTP请求会从ASP.NET引擎中延迟,而不会直接从控制台应用程序延迟。有解决办法吗

这是我调用HTTP API的方式:

 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你可能是对的,这句话听起来很粗鲁,但这也是向新来者解释为什么感谢和道别会让我们在他的问题上花费更少的时间的最好方式。不过,我会尽量保持低调。我无意冒犯任何人。