بدست آوردن مقادیر در asp
با سلام
یک post حاوی مقدیر binery ارسال میشه به سایت.چطوری بدستوشن بسارم؟
6 پاسخ
دقیقاً مشکلتون از کجاست؟ میخوایید داخل سرور اطلاعات رو به صورت آرایه دریافت کنید؟
شما یه کاری کنید، آرایتون رو تبدیل به Base64 کنید:
var base64Text = Convert.ToBase64String(b);
بعد مقدار base64Text رو به وب سرویس ارسال کنید و سمت سرور دوباره بوسیله کد زیر رشته دریافتی رو به آرایه ای از بات ها تبدیل کنید:
var b = Convert.FromBase64String(base64Text);
تست کنید ببینید جواب میگیرید؟
سلام
مهندس نگاه کن یه خورده پیچیدست.من یه دستگاه الکترونیکی دارم که داده ها رو به صورت باینری میفرسته.
حالا چون امکان دستکاری دستگاه وجود نداره من باید داده های رو بگیرم و پارس کنم.داده ها به صورت زیر هستش.
فایل دودویی datalog_packet : این فایل حاوی مقادیر اندازه گیری شده توسط کلاینت برای کانال های مختلف
است.
فرمت نمونه ها:
12 بایت اول هر نمونه شامل مقادیر ordinal_number ، تاریخ و زمان اندازه گیری نمونه است:
بایت 1 تا 4 : یک عدد صحیح چهار بایتی که مقدار آن برابر ordinal_number است.
بایت 5 تا 6: یک عدد دو بایتی که مقدار "سال" به میلادی است.
بایت 7: یک عدد یک بایتی که مقدار "ماه" به میلادی است.
بایت 8: یک عدد یک بایتی که مقدار "روز" به میلادی است.
بایت 9 : یک عدد یک بایتی که مقدار چندمین روز هفته است ) مقدار آن بین صفر تا شش است، معادل شنبه تا جمعه(
بایت 10 : یک عدد یک بایتی که مقدار "ساعت" است.
بایت 11 : یک عدد یک بایتی که مقدار "دقیقه" است.
بایت 12 : یک عدد یک بایتی که مقدار "ثانیه" است.
خب حالا من میخام خودم برای تست یک مثلا winform بسازم که شبیه همین داده ها رو به وب سرویس ارسال کنه.میام از متد زیر استفاده میکنم
byte[] requestBytes = new byte[12]; byte[] ordinalNumberByte = BitConverter.GetBytes(150000); byte[] yearByte = BitConverter.GetBytes(2019); byte[] monthByte = BitConverter.GetBytes(11); byte[] dayByte = BitConverter.GetBytes(8); byte[] dayOfWeekByte = dayOfWeekByte = BitConverter.GetBytes(3); byte[] hourByte = BitConverter.GetBytes(20); for (int i = 0; i < 24; i++) { switch (i) { case 0: case 1: case 2: case 3: requestBytes[i] = ordinalNumberByte[i]; break; case 4: case 5: requestBytes[4] = yearByte[0]; requestBytes[5] = yearByte[1]; break; case 6: requestBytes[i] = monthByte[0]; break; case 7: requestBytes[i] = dayByte[0]; break; case 8: requestBytes[i] = dayOfWeekByte[0]; break; case 9: requestBytes[i] = hourByte[0]; break; } } HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); Stream requestStream = req.GetRequestStream(); requestStream.Write(requestBytes, 0, requestBytes.Length);
اصلا روشم درسته؟؟
موقع دریافت به صورت زیر عمل میکنم :
string strValue = string.Empty; _context.Response.ContentType = "text/xml;charset=utf-8"; System.IO.StreamReader reader = new System.IO.StreamReader(_context.Request.InputStream); strValue = reader.ReadToEnd(); byte[] b = Encoding.Default.GetBytes(strValue);
مقادیر ارسال میشن ولی تو دریافت مشکل دارم.داده ها همونی نیستن که ارسال شدن.
ارسالی :
دریافتی
کسی نیس کمک کنه
من اطلاعاتی دارم که که داخل یک آرایه byte ذخیره شده است. مثلا سال ماه روز .....
خب وقتی ارسال میکنم به صورت string ارسال میشه و موقع دریافت بهم میریزه.
من باید بتونم آرایه باینری رو بگیرم و داده ها رو جدا کنم و تو دیتابیس درج کنم
سلام
مهندس حل شد.باید از BineryReader استفاده میکردم.
فقط باید توجه داشت که نوع ذخیره بایت به صورت اینتلی هست یا موتورلایی.یعنی قسمت با ارزش بایت در سمت چپ هست یا راست