PDA

View Full Version : سوال: مشکل با دریافت اطلاعات با HttpClient



hamid_14
جمعه 19 مهر 1398, 16:39 عصر
با سلام وقت بخیر
من برای دریافت اطلاعات از دیتابیس با httpclient از کد زیر استفاده میکنم


using (var client = new HttpClient()) {
using (var response = await client.GetAsync(url))
{
if (response.IsSuccessStatusCode)
{
var JsonString = await response.Content.ReadAsStringAsync();


if (JsonString == "101")
{
MessageBox.Show("نام کاربری صحیح نمی باشد", "خطا");
CheckUser = false;
}
else
if (JsonString != "[]")
{
dynamic stuff = JsonConvert.DeserializeObject(JsonString);


if (stuff == null)
{
MessageBox.Show("null ", "خطا");


}
else
{
List<ListOfTOR> ListOfTOR = new List<ListOfTOR>();
datagridview1.DataSource = JsonConvert.DeserializeObject<ListOfTOR[]>(JsonString).ToList();
CheckUser = true;
}
}
else
{
datagridview1.DataSource = null;
}
}
}
}

در iis تست کردم همه چیز خوبه ولی از وقتی دیتابیس بردم روی هاست اطلاعاتی که در بانک ثبت میشه با کد بالا قایل دریافت نیستند مگر اینکه در یک بروزر دستی url بزنم اطلاعات دریافت کنم و بعد با کد بالا در نرم افزار اطلاعات را نمایش بده.امیدوارم درست توضیح داده باشم اگه از دوستان کسی دلیلش میدونه لطفا راهنمایی کنید



آدرس در متغییر url هست شبیه این کد:
http://183.183.55.55/api/apiweb/getlist?username=123456&pass=123456&Id=14&MDate=1398/07/19

این هم کد web api هست


[HttpGet("getList")]
public IActionResult getList(int Id, string MDate, string Username,string Pass)
{
var ent = db.Tbl_Authorities.FirstOrDefault(e => e.Username == Username && e.Pass == Pass);
if (ent != null)
{

var query = db.Tbl_Tickets.Where(x => x.CompanyCode == ent.CompanyCode && x.BranchCode == ent.Branch && x.IdProgram != 3 && x.IdServices == VId && x.MDate == VMDate).ToList();
return new ObjectResult(query);


}
else
{
return this.Content("101", "application/json");
}
}

Mahmoud.Afrad
جمعه 19 مهر 1398, 17:19 عصر
این آدرس http://183.183.55.55/api/apiweb/getlist?username=123456&pass=123456&Id=14&MDate=1398/07/19 در مرورگر شما جواب میده؟

hamid_14
جمعه 19 مهر 1398, 17:29 عصر
متاسفانه این ip که ایجا نوشتم صوری هست ولی با ip واقعی در مرورگر کاملا درست عمل می کنه فقط با کد در نرم افزار نمیشه یا باید اول در مرورگر یک با دستی با url اطلاعات دریافت کنم یا اینکه با 30 دقیقه تاخیر میتونم اطلاعات رو با کد دریافت کنم باز هم یاداور میشم این مشکل با اتصال به هاست پیش میاد نه لوکال

hamid_14
جمعه 19 مهر 1398, 19:18 عصر
مشکل برطرف شد
استفاده از using (var client = new HttpClient()) در جاهای مختلف برنامه باعث تاخیر 240 ثانیه می شد.

راهنمایی کامل از آقای کامران سادین در لینک زیر.تشکر

https://sadin.ir/Articles/Article/big-mistake-in-using-httpclient