我正在編寫一個應用程序,通過HTTP發送文本消息到Slooce Tech API。由於應用程序將不得不發送大量的文本消息,因此我正在嘗試優化其速度。加速HTTP發佈速度
下面的第二段代碼是我目前用來發送帖子的方法。我編寫了第一段代碼,並且忽略了HTTPWebResponse
以嘗試使其更快。
問題是新方法實際上比較慢,而不是花費0.25秒來執行,它需要一秒或更多時間,有時會卡住。
有誰知道爲什麼會這樣做或任何其他提示,以提高此應用程序的速度?我已經添加了Request.Proxy=null
並且加快了一點。
謝謝。
修改後的代碼是:
public void QuickSend()
{
XML = "<message id=\"" + lMessageID + "\"><partnerpassword>" + PartnerPassword + "</partnerpassword><content>" + sMessage + "</content></message>";
URL = "http://sloocetech.net:****/spi-war/spi/" + PartnerID + "/" + sRecipient + "/" + Keyword + "/messages/mt";
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
RequestBytes = System.Text.Encoding.ASCII.GetBytes(XML);
Request.Method = "POST";
Request.ContentType = "text/xml;charset=utf-8";
Request.ContentLength = RequestBytes.Length;
RequestStream = Request.GetRequestStream();
RequestStream.Write(RequestBytes, 0, RequestBytes.Length);
RequestStream.Close();
}
這裏是原代碼:
public XDocument SendSMS()
{
XML = "<message id=\""+ lMessageID +"\"><partnerpassword>" + PartnerPassword + "</partnerpassword><content>" + sMessage + "</content></message>";
URL = "http://sloocetech.net:****/spi-war/spi/" + PartnerID + "/" + sRecipient + "/" + Keyword + "/messages/mt";
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
RequestBytes = System.Text.Encoding.ASCII.GetBytes(XML);
Request.Method = "POST";
Request.ContentType = "text/xml;charset=utf-8";
Request.ContentLength = RequestBytes.Length;
RequestStream = Request.GetRequestStream();
RequestStream.Write(RequestBytes, 0, RequestBytes.Length);
RequestStream.Close();
HttpWebResponse Resp = (HttpWebResponse)Request.GetResponse();
oReader = new StreamReader(Resp.GetResponseStream(), System.Text.Encoding.Default);
string backstr = oReader.ReadToEnd();
oReader.Close();
Resp.Close();
Doc = XDocument.Parse(backstr);
return Doc;
}
您不能忽略'Request.GetResponse()',因爲這實際上是發送您在Web請求中構建的數據。 –
你應該在你的'GetResponse'代碼中放置'using'語句。這樣做你也可以省略你的Close語句。 – Matthew
你應該並行地發送多個POST(即async/TPL/ThreadPool /任何...)以實現高吞吐量... – Yahia