sajadf7
دوشنبه 24 اسفند 1394, 21:02 عصر
با عرض سلام و خسته نباشید
من یک برنامه ای در حال نوشتن برای ارسال درخواست های پشت سر هم به یک وبسرویس هستم
وقتی با جاوااسکریپت و با این کد انجام میدهم
function httpPost(url,data) {
var xhttp = new XMLHttpRequest();
data = encodeURI(data);
xhttp.open("POST", url, false);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
xhttp.send(data);
return xhttp.responseText;
}
در مدت زمان حدودی 300 میلی ثانیه درخواست بنده فرستاده میشه به وب سرویس
اما همین درخماست رو به دقیقا همین وب سرویس و همان اطلاعات و همان هیدر با دستور زیر در سی شارپ میفرستم:
public string createrequestany(string data1, string url, CookieContainer CookieJar)
{
string resp = "";
try
{
//Stopwatch sw = Stopwatch.StartNew();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "post";
webRequest.ContentType = "application/x-www-form-urlencoded";
//webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0";
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22";
ASCIIEncoding encoding = new ASCIIEncoding();
string s =data1;
byte[] data = encoding.GetBytes(s);
webRequest.ContentLength = data.Length;
webRequest.CookieContainer = CookieJar;
Stream newStream = webRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse webResponse;
webResponse = (HttpWebResponse)webRequest.GetResponse();
string html;
using (Stream strmresponse = webResponse.GetResponseStream())
{
using (StreamReader reader = new StreamReader(strmresponse, Encoding.UTF8))
{
html = reader.ReadToEnd();
resp= html;
}
}
//sw.Stop();
//MessageBox.Show(sw.Elapsed.ToString());
return ass.ra(resp, CookieJar);
}
catch
{
return "error";
}
}
اما در سی شارپ زمان ارسال این درخواست به 1.5 ثانیه میرسه
چطوری و با چه روشی میتونم همانند جاوااسکریپت و با همان سرعت درخواست هام رو در سی شارپ بفرستم؟؟
تعداد request های ارسال من تقریبا همزمان 30 عدد هست.
در جاوا اسکریپت به راحتی میتونم تمام این 30 درخواست رو در یک ثانیه ارسال کنم و پاسخ بگیرم اما در سی شارپ به 8 الی 10 ثانیه میرسه
یه توضیح کوچولو هم بدم که کد جاوا اسکریپت رو در روی افزونه greasemonkey نصب میکنم و درخواست ارسال میکنم
ممنون میشم راهنمایی کنید
من یک برنامه ای در حال نوشتن برای ارسال درخواست های پشت سر هم به یک وبسرویس هستم
وقتی با جاوااسکریپت و با این کد انجام میدهم
function httpPost(url,data) {
var xhttp = new XMLHttpRequest();
data = encodeURI(data);
xhttp.open("POST", url, false);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
xhttp.send(data);
return xhttp.responseText;
}
در مدت زمان حدودی 300 میلی ثانیه درخواست بنده فرستاده میشه به وب سرویس
اما همین درخماست رو به دقیقا همین وب سرویس و همان اطلاعات و همان هیدر با دستور زیر در سی شارپ میفرستم:
public string createrequestany(string data1, string url, CookieContainer CookieJar)
{
string resp = "";
try
{
//Stopwatch sw = Stopwatch.StartNew();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "post";
webRequest.ContentType = "application/x-www-form-urlencoded";
//webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0";
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22";
ASCIIEncoding encoding = new ASCIIEncoding();
string s =data1;
byte[] data = encoding.GetBytes(s);
webRequest.ContentLength = data.Length;
webRequest.CookieContainer = CookieJar;
Stream newStream = webRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse webResponse;
webResponse = (HttpWebResponse)webRequest.GetResponse();
string html;
using (Stream strmresponse = webResponse.GetResponseStream())
{
using (StreamReader reader = new StreamReader(strmresponse, Encoding.UTF8))
{
html = reader.ReadToEnd();
resp= html;
}
}
//sw.Stop();
//MessageBox.Show(sw.Elapsed.ToString());
return ass.ra(resp, CookieJar);
}
catch
{
return "error";
}
}
اما در سی شارپ زمان ارسال این درخواست به 1.5 ثانیه میرسه
چطوری و با چه روشی میتونم همانند جاوااسکریپت و با همان سرعت درخواست هام رو در سی شارپ بفرستم؟؟
تعداد request های ارسال من تقریبا همزمان 30 عدد هست.
در جاوا اسکریپت به راحتی میتونم تمام این 30 درخواست رو در یک ثانیه ارسال کنم و پاسخ بگیرم اما در سی شارپ به 8 الی 10 ثانیه میرسه
یه توضیح کوچولو هم بدم که کد جاوا اسکریپت رو در روی افزونه greasemonkey نصب میکنم و درخواست ارسال میکنم
ممنون میشم راهنمایی کنید