PDA

View Full Version : پیاده سازی XMLHttpRequest جاوااسکریپت در سی شارپ



sajadf7
دوشنبه 24 اسفند 1394, 20: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 نصب میکنم و درخواست ارسال میکنم

ممنون میشم راهنمایی کنید

sajadf7
دوشنبه 02 فروردین 1395, 19:43 عصر
کسی اطلاعاتی در رابطه با کلاس httpwebrequest نداره ؟؟؟؟؟؟

که چرا در متد post اینهمه سرعتش پایین میاد؟

atiye_khaje
جمعه 11 تیر 1395, 22:46 عصر
سلام
من توی یه صفحه html یه آدرس رو که object بر می گردونه توی تب جدید مررگر باز می کنم. حالا اون object رو از اون تب می خوانم. ولی مقدار undefined بر میگردونه.
کسی می دونه چه جوری میشه این کار رو کرد؟

var link = 'http://mysite.ir/Ajax.php?call=dataDetail&id=10';
var w = window.open(link, 'win');
var ss = w.document.getElementsByName("body");
w.close();
alert(ss);