View Full Version : آموزش ساخت وب سرویس و استفاده در اندروید
harani
شنبه 31 خرداد 1393, 10:49 صبح
سلام دوستان خود من مدتها پیش بدنبال یادگیری وب سرویس در اندروید بودم و آموزشهای زیادی در این مورد نبود یا اونایی که بود خیلی کم بودند تا اینکه با هزار جستجو و مطالعه تا حد مطلوبی این آموزشها را فرا گرفتم حالا میام اونا رو اینجا میذارم :
آموزشهایی که من قرار میدم مبتنی بر این موضوع است که دوستان اندروید رو بخوبی بلد هستن . چرا که بحث وب سرویس جز مباحث پیشرفته اندرویده .
خب برای وب سرویس لازمه که ابتدا ابزارهای آن را از جمله داشتن یک سرور (که ما چون میخواهیم لوکال کار کنیم بهتر است که نرم افزار wamp server را دانلود کنیم ) و یک محیط برنامه نویسی php & html مانند notepad++ و dreamviwer یا phpstorm و یا ... داشته باشیم .
دانلود wamp server : x86 حجم 38 m (http://dl2.soft98.ir/soft/WampServer.2.5.x86.exe)
دانلود wamp server : x64 حجم 41 m (http://dl2.soft98.ir/soft/WampServer.2.5.x64.exe)
پسورد soft98.ir
دانلود notepad++ حجم 6 m (http://dl2.soft98.ir/soft/Notepad.6.6.6.exe)
پسورد soft98.ir
اگه استقبال شد بحث را ادامه میدیم .
slr560
شنبه 31 خرداد 1393, 14:19 عصر
عالیه دوست عزیز. ادامه بدین.
hamed_hossani
شنبه 31 خرداد 1393, 15:04 عصر
poster چگونه وب سرویس خود را تست کنیم.mp4 (http://irsateam.com/Uploads/poster.mp4)
Wcf_Tutorial درک بیشتر WCF به کمک مثال(ویدیو).mp4 (http://irsateam.com/Uploads/Wcf_Tutorial.mp4)
mhn143
شنبه 31 خرداد 1393, 16:16 عصر
سلام این هم یک آموزش دیگه
http://developer.xamarin.com/guides/cross-platform/application_fundamentals/web_services/walkthrough_working_with_WCF/
harani
شنبه 31 خرداد 1393, 17:04 عصر
سلام این هم یک آموزش دیگه
http://developer.xamarin.com/guides/cross-platform/application_fundamentals/web_services/walkthrough_working_with_WCF/
poster چگونه وب سرویس خود را تست کنیم.mp4 (http://irsateam.com/Uploads/poster.mp4)
Wcf_Tutorial درک بیشتر WCF به کمک مثال(ویدیو).mp4 (http://irsateam.com/Uploads/Wcf_Tutorial.mp4)
ممنون از شما دوستان ولی از این پس سعی کنین بحث آموزشی رو که خودتون یادگرفتید در این جا بذارین و از ارجاع لینک خودداری کنید چرا که این فقط یک پست آموزشی هستش .
harani
شنبه 31 خرداد 1393, 18:17 عصر
جلسه ی دوم رفع مشکلات در wamp :
توجه بفرماید تنظیمات زیر بر حسب control panel ویندوز 7 ( که فکر کنم برای vista هم همینه ) برای xp اگه نمیدانید کلمات کلیدی آن را سرچ کنید و تنظیمات را انجام دهید .مطمئناً ویندوز های ویندوز 8 و 8.1 تفاوت خاصی با 7 نداره .
1- سبز نشدن wamp :
بسیاری از شما زمانیکه wamp را نصب و اجرا میکنید بایستی آیکن آن (که در گوشه ی پایین سمت راست در ناحیه task bar) ابتدا قرمز سپس نارنجی رنگ و در نهایت سبز رنگ شود اگر سبز رنگ نشد wamp شما بدرستی نصب شده است اما وجود یکسری از ابزارهای تحت سرور با wamp دچار تداخل شده اند . به عنوان مثال اگر شما از sql server استفاده میکنید ابتدا بایستی همه ی سرویس های آن را غیر فعال (stop) کنید و دوباره wamp را اجرا کنید . در حالت کلی برای stop کردن سرویس های نرم افزارها وارد (control panel => system and security => admistrative tools=>services) میشویم . سرویس مربوطه را پیدا میکنیم و چناچه status آن started بود روی آن راست کلیک کنید و آن را stop کنید . برای تمامی service ها فعال تحت server مانند sql server این عمل را تکرار کنید . در نهایت wamp را stop و start کنید بایستی آیکن wamp پس از گذشت چند ثانیه سبز رنگ شود .
2- مشکل در ip :
پس از اینکه wamp شما بدرستی start شد . برازر خود را بالا بیارین (من خودم firefox رو دوست دارم) سپس عبارت localhost را تایپ کنید بایستی صفحه ی مربوط به wamp نشون داده بشه اگه نشد یا wamp بدرستی نصب نشده یا همچنان سبز رنگ نیست . اگر درست بود به جای localhost تایپ کنید 127.0.0.1 (این عبارت دقیقاً معنی local host میده ) همچنین به جای local host اگر ip خودتون هم تایپ کنین بایستی صفحه مربوطه به wamp در برازر بیاد .
صفحه ی مربوط در wamp در برازر
http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2012/07/wamp-02.jpg
چگونه ip خودمون را بفهمیم :
راه اول : در قسمت مربوط به network در پایین سمت راست کامپیوتر (در ناحیه task bar) راست کلیک کنید کنید سپس open network and sharing center را انتخاب کنید .
یا به مسیر Control Panel\Network and Internet\Network and Sharing Center بروید قسمت connections را انتخاب کنید در قسمت بالا اومده details را کلیک کنید قسمت ipv4 address همان ip شماست .
2- یه کار دیگه این که میتوان در پنجره start (که میتوان با کلید پنجره کیبورد رو بزنید) تایپ کنید . cmd سپس enrter و در پنجره ظاهر شده ipconfig رو تایپ کنید و enter رو بزنید مقدار ipv4 address آدرس ip شماست .
حال رسیدیم به این مشکل که ip زدیم و صفحه wamp ظاهر نشد . پوشه ی wamp رو که نصب کردیم باز میکنیم و به مسیر \wamp\bin\apache\Apache<version code>\conf\ میریم :
حال که به این مسیر رسیدن برروی فایل httpd.conf راست کلیک کنید سپس با notepad یا notepad++ (بهتره) ویرایش کنید . یا این فایل و درگ دراپ کنید تو یکی از محیط های ویرایش حال که این که باز کردید عبارت زیر رو بیابید :
<Directory "c:/wamp/www">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
# Require all granted
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
Allow from localhost
Allow from 192.168.1
Allow from 192.168.56
</Directory>
در این بالا همانطور که میبیند در قسمت هایی شامل Allow from هستید این دو گزینه Allow from 192.168.1 و Allow from 192.168.56 ای پی خودتان هست . اگر با تایپ ip به جای localhost صفحه wamp باز نشد . کافی مانند این قسمت ip خودتان را به این صورت وارد میکنید Allow from + ip (هر قسمت مربوط به Allow from مانند بالا را نداشتید به همین صورت ثبت نمایید ) فایل را ذخیره کنید. یکبار wamp (یادم نمیاد ولی فکر کنم یکبارم باید سیستم رو هم) reset کنید . سپس با وارد کردن ip صفحه wamp ظاهر میشود . در غیر این صورت مراحل را نادرست دنبال کردید .
اینهم از این قسمت ببینیم استقبالها چطوری تا ادامشو بعدن بدیم .
حال داخل notepad++ بشیم قبل از کدنویسی از منوی encoding گزینه ی encoding in utf8 رو انتخاب کنید و در قسمت language => p => php را انتخاب کنید .
ali-star
یک شنبه 01 تیر 1393, 17:55 عصر
harani (http://barnamenevis.org/member.php?256621-harani) عزیز من خیلی وقته دارم دنبال آموزش خوب درباره وب سرویس میگردم لطفا آموزش رو ادامه بدید...
harani
یک شنبه 01 تیر 1393, 20:59 عصر
جلسه ی سوم وب نویسی با PHP : قسمت اول
من در ابتدا قصد دارم کدنویسی تحت وب را آموزش بدم بعد استفاده اونو در اندروید هر چند دانشم زیاد نیست ولی تا حدی که کار رابندازه بلدم اگه میخواین درست حسابی php یاد بگیرین پیشنهاد من سایت معروف
http://www.w3schools.com (http://www.w3schools.com) هستش به طور گویا و جامع تمام موارد رو توضیح داده .
چرا php ?
php قابلیت سرعت اجرای بالا در صفحات در مقابل خیلی محیط ها ی دیگه مانند asp را دارد . سازگاری با بیشتر سیستم عامل ها و server ها مانند apache و .. می باشد . و مهم تر آنکه برای کسانی با java (مانند ما اندروید کارها) و C کار کردند یادگیری بسیار ساده ای دارد .
خدا رو شکر از این بحث و جدل ها تو نت ریخته اگر دوستی میخواد تعصبی نشون بده (که نمیدونم asb سرعت بالاتری داره و ...) تعصبش بی دلیل من نظر خودم و سایر اساتید رو نوشتم .
حال بریم بدنبال ادامه ی کار :
همانطور که گفتم شما به یک wamp نیاز دارید و یک محیط برنامه نویسی برای php .از سمت wamp که ok شدیم حال میریم بدنبال php :
من گفتم که میتونید از notepad++ استفاده کنید ولی notepad++ برای کد نویسی ابزار حرفه ای نیست چرا که نسبت به نرم افزارهای دیگه خیلی هوشمند نیست و قابلیت عیب یابی کد هم در آن وجود ندارد و معمولاً مانند note pad ابزار ویرایش هست .
من خودم از intellij idea استفاده میکنم اگه شما هم مانند من نمیخواهید از note pad استفاده کنید کافی تو google سرچ کنید php idea یا محیط برنامه نویسی php یک لیست بلند بالا از محیط ها مختلف نشون داده میشن یکی از این محیط های قدرتمند محیط JetBrains PhpStorm هستش که میتونید آن را از اینجا دانلود کنید http://www.p30world.com/6291/jetbrains-phpstorm/ محیط برنامه نویسی برای php خیلی هستش مثل dreamweaver ، netbeans , Zend Studio ، phpDesigner والی ماشالا بسته به سلیقتون هر کدومشوم رو که دوست داشتید میتونید بدانلودید :لبخند:
به هر حال خیلی ها شاید سرعت اینترنتشون کمه یا حجم دانلودشون محدوده ما از همون notepad++ استفاده میکنم .
اولین سایت لوکال خود را ایجاد کنید :
شما تو درایوی که wamp رو نصب کردید میان یه پوشه مثل /dev/projects/websites می سازید که همه ی پروژتون بریزین تو اون حالا اگه میخوای یه محیط برنامه نویسیم برای php داشته باشین میتونی توی dev/idea بریزین :
مسیر پروژه بالا را داشته باشین حال میام سایت را ایجاد میکنیم . روی ایکن wamp سبز رنگ در نوار task bar کلیک کنید و مطابق شکل کار نمایید و یک alias جدید بسازید :
(Apache + alias directories +add an alias)
120404
با این کار وارد یک محیط کنسول شکل مانند cmd ویندوز میشوید .
در این قسمت اسم سایتی که میخواهید ایجاد کنید را وارد کنید مثلاً samplesite و enter را بزنید .
سپس بایستی میسری که فایل ها پروژتون هست را در این قسمت وارد کنید که بهتر است مسیر پروژه (همان مسیر /dev/projects/websites/<YourSiteName> فولدر <YourSiteName> که در مسیر مربوطه باید بسازید) را تایپ کنید و enter را بزنید.
حال داخل notepad++ بشیم قبل از کدنویسی از منوی encoding گزینه ی encoding in utf8 رو انتخاب کنید و در قسمت language => p => php را انتخاب کنید .
کد زیر را در آن میریزیم :
<؟php
echo "This is First My Site";
?>
من کد نویسی php را در جلسات بعد بیشتر توضیح خواهم داد :
حال آن را در مسیر مربوطه و با نام index ذخیره میکنید .
browser خود را باز کنید و localhost را تایپ کنید . در قسمت your aliases بایستی نام پروژه ی شما آمده باشد و گرن شما به اشتباهی مراحل را دنبال کردید . زمانی که شما برروی سایتتون کلیک میکنید بایستی مقدار This is First My Site در برازر شما آمده باشد .
حال یکسری از دوستان تمام مراحل را درست میرن و با خطای Forbidden مواجه میشن آن ها بایستی کاری کاملاً متفاوتی انجام دهند .
و حالا راه حل چیست :
ابتدا اگر aliase ای ایجاد کردید را پاک کنید : به قسمت ساخت alias جدید ( که در بالا به همراه عکس نشون داده شد) بروید در این جا شما لیستی از دایرکتوری ها را میبنید پروژه خود را بیابید و delete alias رو میزنید و wamp دوباره reset میشود .پروژه خودتون رو از مسیر پروژتون cut کنید .
به مسیر C:\wamp\www (یا هر دایرکتوری که wamp داره ) همینجا پروژتون رو همراه با فولدر مربوطش paste کنین (از این پس برای ساخت پروژه هاتون به جای ساخت یک alias جدید کافی یه فولدر در اینجا بسازین و فایل های php و html را مستقیماً توش قرار بدین ) تو این مسیر یک فایل index.php است که این فایل در واقع همان صفحه ی wamp ای است که با تایپ local host ظاهر میشود .این فایل را با notepad یا notepad++ ویرایش کنید بدنبال کد
$>projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>';
باشید .این قطعه کد رو به اینصورت عوض کنین :
$projectContents .= '<li><a href="http://localhost/'.$file.'">'.$file.'</a></li>';
حال فایل را ذخیره کنین . و wamp را reset کنید .
پس از سبز شدن wamp عبارت loacal host را تایپ کنید حالا پروژه شما در قسمت your projects قرار دارد با انتخاب آن بایستی مقدار This is First My Site در برازر نمایان شود در غیر این صورت توالی مراحل را به اشتباه انجام دادید .
دوستان من شاید تا مدتی به خاطر دغدغه های کاری نباشم . من در جلسه ی بعد میخواهم به کدنویسی php بپردازم شما میتوانید خودتان از سایت http://www.w3schools.com این دانش را فرابگیرین ولی اگه نخواستید در
جلسه ی چهارم وب نویسی با PHP : قسمت دوم
به این قسمت می پردازم :
امیدوارم که مطالب مفید بوده باشد به امید استقبال شما عزیزان .
ali-star
یک شنبه 01 تیر 1393, 22:14 عصر
در لینوکس ما به جای wamp از lamp استفاده می کنیم چطوری میتونیم یه alias directorie بسازیم؟
iman_beygi
دوشنبه 02 تیر 1393, 22:51 عصر
لطفا ادامه بدین
اگه امکانش هست برنامه نویسی با اکلیپس (eclipse) رو هم همراه با وب سرویس بذارید.
ممنون
harani
یک شنبه 05 مرداد 1393, 21:23 عصر
جلسه ی چهارم وب نویسی با PHP : قسمت دوم
با سلام خدمت دوستان و عرض تبریک پیشاپیش جهت فرارسیدن عید سعید فطر امیدوارم نماز و روزه هاتون قبول درگاه حق باشن .
با عرض پوزش به همه ی دوستان علاقه مند من دلیل مشغله زیاد کاری تاخیر زیادی در یادگیری ایجاد کردم امیدوارم من را بابت این موضوع عفو فرمایید
برخی از دوستان سوالاتی از من پرسیدن که من در ابتدا به سوالات دوستان پاسخ میدهم :
یکی از دوستان در مورد سرور واقعی صحبت کردن که باید بگم سرور در واقع یک کیس قدرتمند است که به یک lan پرسرعت وصل می باشد معمولاً سرورهای قیمت های زیادی دارند و زیاد مناسب برای کارهای فردی نیست و بیش تر در ارگان ها و سازمان ها مورد استفاده قرار میگیرد ولی اگه مصمم به خرید آن هستید سایت ایران اچ پی یکی از فروشگاه های که یک فروشگاه سرور آنلاین هستش میتوانید با مراجعه به سایت سرور مدنظرتون رو خریداری فرمایید .
یکی دیگر از دوستان در مورد lamp صحبت کردن lamp در واقع همون wamp در محیط سیستم عامل لینوکس هستش باید بگم این سرور مورد علاقه بسیاری از توسعه دهندگان و سازمانهای بزرگ جهانی است مانند یوتوب , ibm و ... من هر چقدر از خوبی آن بگم بازم کم گفتم . ولی دو موضوع یکی اینکه این مطلب موضوع بحث آموزشی ما نیست و متاسفانه من به شخصه با lamp کار نکردم . اما من چند سایت را به شما معرفی میکنم که میتونه شما را راهنمایی کند یا میتوانید در فوروم های زبان php مطلبتان را درج کنید .
سایت 1: http://www.ibm.com/developerworks/web/tutorials/wa-lamp/wa-lamp.html
سایت 2 : http://lamphowto.com/
حال برویم سراغ بحث آموزش :
تا اینجا رسیدیم که قرار شده در پیرامون کدهای php صحبت کنیم . سعی میکنم به صورت مقایسه با جاوا پیش برم که هم درک بهتر باشه هم سریعتر جلو بریم .
Php همانند python یک زبان توصیفی است بدین معنا که این دسته از برنامه ها برای اجرا شدن نیازی به کامپایل کد ندارند .
آموزش شروع شد :
کدهای php باید بین دو تگ
<?php
?>
باشن .
==============================================
تو جاوا میگیم :
String a = "salam";
int b = 2;
double c = 435.6;
تو php میگیم
$a = "salam";
$b = 2;
$c = 435.6;
==============================================
تو جاوا میگیم :
String a = "this is" + "php";
int a = 2;
int b = 3;
int c = a + b;
تو php میگیم
$a = "this is" . "php";
$a = 2;
$b=3;
$c=$a+$b;
تفاوت ها رو خوب بررسی کنید :
==============================================
تو جاوا میگیم :
String a = "HELLo";
System.out.print(a);
تو php میگیم
$a = "hello";
echo $a;
پس echo برای چاپ در php استفاده میشود البته php شاما print هم است شما میتوانید برای چاپ از ان نیز استفاده کنید اما جز مطالب ما نیست .
==============================================
تو جاوا میگیم :
String a = "Hello world!";
int b = a.lenght();
تو php میگیم
echo strlen("Hello world!");
==============================================
تو جاوا میگیم :
String a = "Hello world!";
int b = a.indexOf(world);
تو php میگیم
echo strpos("Hello world!","world");
==============================================
تو جاوا میگیم :
for (int i = 0 ; i <= 10 ;i++){
System.out.print("The number is: " + i);
}
تو php میگیم
for ($x=0; $x<=10; $x++) {
echo "The number is: ".$x;
}
==============================================
تو جاوا میگیم (تعریف متد) :
public void writeMsg(){
System.out.print("Hello world");
}
تو php میگیم
function writeMsg() {
echo "Hello world!";
}
متدهای php تایپ بازگشت مثل void , int ,... لازم ندارد .
==============================================
کامنت ها هم دقیقاً مثل همند فقط برای کامنت یه خطی در php میتونید اول خط # بذارید اما از // نیز میتونید استفاده کنید .
بچه ها تا الان کدها رو دید ما تو جاوا برای تعریف متغیرها باید نوع تایپ آن را مشخص میکردیم ولی در php نیازی به اینکار نیست متغیر در php توسط یک $ تعریف میشود و نوع متغیر وابسته نیست .
بریم سر آرایه برای این قسمت دیگه نیازی به قیاس با جاوا نیست :
<؟php
//یه آرایه new میکنیم .
$array1=array();
// 1 تا 10 رو توش اضافه میکنم :
for($i=0;$i<10;$i++)
{
$array1[]=$i/5;
}
یک آرایه رو میتونید نیز new و طرق مختلف آن را مقدار دهی کنید .
<؟PHP
$myarray = array();
$myarray[] = 2;
$myarray[] = 3;
$myarray[] = 4;
$myarray[6] = 2;
$myarray["hello"] = 2;
$myarray["hello2"]="substring";
$myarray["another array"] =array(
"hello5"=>3,"test"=>"r",3=>5, "For Loop" => $array1
);
//$array1 را در کد بالا تعریف کردیم .
echo json_encode($array);
?>
این کد رو به همان روشی که در جلسه قبلی گفتم در localhost اجرا کنید .خروجی به شکل زیر دیده میشود
{"0":2,"1":3,"2":4,"6":2,"hello":2,"hello2":"substring","another array":{"hello5":3,"test":"r","3":5,"For Loop":[0,0.2,0.4,0.6,0.8,1,1.2,1.4,1.6,1.8]}}
در این کد باید بگم چیزی را که شما به شکل آرایه انتظار داشتید تحقق نیافت این آرایه به صورت key-value پر شده است . حتی خط آخر کد "Key ، "another array یک value به شکل یک آرایه key-value دارد و در داخل آن یک آرایه دارد $array1 (که در بالاتر با for آن را پر کردیم)
همانطور که میبیند پر کردن آرایه دست خودمونه هرجوری که خودمون دوست داریم میتونیم آن را پر کنیم . آرایه ای که در داخل {} قرار میگیرد در php در واقع یک شی است
json_encode متدی در php است که مقدار آرایه را به یک مقدار قابل چاپ تبدیل میکنید چرا که مقدار این شی به خودی خود چاپ نمیشود .
راستی یه چیز یادم رفت سایز array هم به شکل زیر است :
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
دوستان من دغدغه زیادی دارم ممکن است مجدد تا یه مدتی نباشم .
خب جلسه ی امروز نیز تمام شد عید بر شما و عزیزانتان مبارک باشد ببینیم استقبال دوستان به چه صورت است .
harani
پنج شنبه 09 مرداد 1393, 20:22 عصر
دوستان استقبال شما خوب نیست. اگه بدین یعنی اینکه کسی خواستار ادامه ی مطلب نیست بحث . تمام این موضوعاتی را که به شما آموزش دادم شامل تجربه کم و بیش بنده و استاید و سایت های مرتبط است . شما تک تک موضوعات هر جلسه را اگر بخواهید از نت یاد بگیرین باید هر موضوع را جداگانه از سایت های مختلف گیر بیاورید من همه ی آن ها را برای شما سعی کردم بطور کامل در این تایپیک قرار دادم . بازم ادامه ی آموزش بوابسته ی استقبال شما دوستان است چرا که من ن وقتشو دارم ن حوصله کافیشو .من فقط بدلیل انگیزه و علاقه زیاد برخی از دوستان آموزش را قرار دادم .
من در ادامه ی جلسات بحثای تکمیلی مرتبط به کد نویسی php و ارتباط و استفاده در اندوید رو آموزش میدم ولی باز به استقبال شما دوستان داره .
poorman
پنج شنبه 09 مرداد 1393, 21:37 عصر
harani (http://barnamenevis.org/member.php?256621-harani) عزیز تنها چیزی که از دست ما بر میاد همین فشار دادن دکمه تشکر هست
اگر تا حالا پست نذاشتم واسه این بود که نظم تاپیک حفظ بشه
من فکر میکنم شما کارتون قابل تحسین هست، به هرحال اگر الان هم زیاد استقبال نشه، این آموزش ها میمونه و بعدا خیلی ها ازش استفاده میکنن
من خودم هیچ آشناییتی با سرور ندارم و دوست دارم که شما آموزش ها رو ادامه بدید :لبخندساده: مرسی
star_game
یک شنبه 12 مرداد 1393, 12:37 عصر
دوست عزیز harani من شدیدا منتظر ادامه آموزش هستم و بسیار از شما متشکرم.
من مدتی است دنبال همچین آموزش کامل و جامعی بودم که امروز پست شما رو دیدم و استقبال می کنم .
ما منتظریم:تشویق::تشویق::تشویق:
majnoon110
یک شنبه 12 مرداد 1393, 16:50 عصر
دوست عزیز لطفا ادامه بدید
مطلبی که شما مینویسید مطمئنا نه تنها الآن بلکه در آینده بارها با توجه و استفاده ی کاربرانی که درباره ی این مسئله جستجو میکنند مواجه میشه
امیدوارم که مارو همچنان بهره مند کنید
NeoFighT
یک شنبه 12 مرداد 1393, 17:09 عصر
harani جان ما بی صبرانه منتظر ادامه آموزش هستیم
لطفا ادامه بدا.
harani
یک شنبه 12 مرداد 1393, 23:19 عصر
جلسه ی پنجم وب نویسی با PHP : قسمت سوم
دوستان متشکر از استقبال گرم شما .
در این جلسه سعی میکنم بحث سمت php رو ببندم ولی بدانید برای یادگیری php تنها به این آموزش نباید اکتفا کنید php برای خود دنیای بزرگی دارد . ولی تا همین جلسه برای کار با اندروید اکتفا میکند .
در php بالغ بر 9 متغیر Superglobals وجود دارد .
این متغیر Superglobals بدین معنی که این نوع متغیرها همیشه دردسترس و نامحدود در استفاده در هرجای کد مانند متدها و کلاسها می باشد .
مهمترین این متغیر ها :
$_GET برای گرفتن داده و $_POST برای ارسال داده و $_REQUEST می باشد در واقع تلفیق دو متغیر قبلی است .
برای فهم بهتر پروژه جدید به اسم siteTest ایجاد کنید و کد php زیر را در آن بنویسید :
<?php
if (empty($_GET['name'])) {
$a="empty";
} else {
$a = $_GET['name'];
}
echo $a;
?>
زمانیکه این کد رو اجرا کنید خروجی شما .empty دیده میشود . به شرط if دقت کنید $_GET['name'] در واقع مقدار name ای است که کاربر ارسال کرده و توسط $_GET['name'] گرفته میشود .
و empty موجود در شرط if که یک boolean برمیگرداند چک مکیند که کاربر آیا مقداری را وارد کرده است یا خیر .
دقت کنید در php برای string هم میتونید از "" استفاده کنید هم ''
در قسمت url برارز نام آدرس ساییتان را میبینید . در جلوی url مقدار زیر را وارد کنید و enter بزنید :
?name=ok%20get
میبینید که مقدار چاپ شده به ok get یک سوالی برای شما پیش میاد و اینکه با خود میگویید من که ok%20get پس چرا به جای %20 مقدار space چاپ شد در پاسخ بایستی گفته شود که شما در url نمیتوانید بظور عادی از برخی کاراکترها نظیر space استفاده کنید و بایستی از URL Encoding Reference (http://www.w3schools.com/tags/ref_urlencode.asp) استفاده کنید . %20 واقع معادل space در قسمت url است .
post را بیشتر در اندروید متوجه میشوید . چرا که فرآیند ارسال داده را انجام میدهد .
REQUEST هم در واقع کار هر دو متغیر فوق رو میکنه . پس بهتره که کلاً به جای get و post از REQUEST استفاده کنیم .
بریم سراغ دیتابیس :
برای دیتابیس وارد phpMyAdim در wamp-server (آیکن موجود در نوار وظیفه) شوید .
121946
دو حالت داره یا مستقیم وارد صفحه ی mysql میشن یا وارد صفحه ای میشن که از شما user pass میخواد اگر user pass خواسته شد . در قسمت user تایپ کنید root و قسمت pass را خالی بذارید و go رو بزنید .
صفحه ای که شما میبنید صفحه ی mysql است .
121947
برای ساخت دیتابیس جدید tab مربوط به databse را نام دیتابیس و در قسمت collation باید utf مربوطه رو وارد کنید و برای ما فارسی زبانان مقدار utf8-general-ci بصرفه است .
دیتابیس ساخته شده در پنل سمت چپ اضافه میشود . بالافاصله از شما میخواهد که یک table بسازید اگر چنین خواسته از شما پرسیده نشد در پنل سمت راست نام دیتابیس را بیابید و گره آن را باز کنید قسمت new را بزنید تا مرحله ساخت table ظاهر شود .
در این مرحله از شما یک نام و تعداد ستونی که نیاز دارید سوال میشوید آن را پر کنید و go را بزنید .
از اینجا به بعد دیگه ساخت table دیتابیس که همگی در این زمینه استادند .دیتابیستون حتماً یک id autoincrement داشته باشد . (نام id اختیاری هر چیز میتواند باشد) auto increment هم بصورت (فکر کنم ai در mysql نشون داده شده است .) در این لینک هم میتوانید انواع متغیرهای مربوط به mysql را ببنید http://www.w3schools.com/sql/sql_datatypes.asp
حال دیتابیسو ساختیم و میخواهیم آن را در php استفاده کنیم کد php آن بدین صورت است .
برای استفاده mysql در php باسد از توابع mysqli استفاده کنیم .
PHP MySQLi = PHP MySQL Improved!
The MySQLi functions allows you to access MySQL database servers.
به عنوان مثال میخواهیم توسط دستور select تمامی فیلدها را استخراج کنیم کد زیر این کار را میکنید .
<?php
$con=mysqli_connect("localhost","root","","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");
while($row = mysqli_fetch_array($result)) {
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br>";
}
mysqli_close($con);
?>
در اینجا توسط mysqli_connect ما connection به دیتابیس زدیم که چهار پارامتر میگیرد نام host نام کاربری پسورد و نام دیتابیس
$con=mysqli_connect("localhost","root","","my_db");
شرط if در خط بعد چک میکنید که آیا ارتباط برقرار شد یا خیر در صورت عدم برقراری عبارت Failed to connect to MySQL: چاپ میشود .
در خط بعد شما query مورد نظر خودتان را میزنید در اینجا شما بایستی کوئری ها sql را کار کرده باشید .میتوانید از این سایت نیز راهنمایی بگیرید http://www.w3schools.com/sql/sql_select.asp
و توسط متد mysqli_fetch_array واقع در حلقه مربوطه تمامی اطلاعات کوئری مربوطه را استخراج میکنیم . و مقدار تعریف شده $row در واقع به آرایه تعریف میشود .
مقدار خروجی در هر بار خواندن بصورت echo $row['FirstName'] . " " . $row['LastName']; بهمراه یک enter چاپ میشود . (FirstName و LastName دقیقاً نام ستونهای دیتابیس هستند ) و در نهایت connecton را میبندیم .
چیزی که ما میبینیم مثلاً به شکل .
a b
c d
e f
g h
اگر توجه کرده باشید ما در دیتابیس تماماً از توابع mysqli استفاده کردیم .
دیدید که چقدر راحت با دیتابیس کار کردیم .
جهت تمرین شما تمامی داده های دیتابیس را بگیرید و بصورت یک آرایه نمایش دهید .
اینهم از این جلسه
دوستان من فکر کنم که وب دیگه تا اینجا بس است .
به خاطر دغدغه های کاری شاید تاخیری زیادی بین آموزش بیوفته .
شما بایستی فقط تمرین و تمرین کنید برای راهنمایی میتوانید از سایت http://www.w3schools.com/PHP/ استفاده نمایید .
در جلسات بعد شروع به استفاده وب در اندروید میکنیم .
به امید استقبال شما دوستان .
majnoon110
چهارشنبه 15 مرداد 1393, 18:52 عصر
دوست عزیز ازونجایی که ما اطلاعات دسترسی به دیتابیسمون رو داخل این فایل مینویسیم، آیا این کار امنیت کافی رو داره؟
لطفا در مورد امنیت این وب سرویس ها هم کمی توضیح بدید متشکرم
harani
چهارشنبه 15 مرداد 1393, 23:18 عصر
دوست عزیز ازونجایی که ما اطلاعات دسترسی به دیتابیسمون رو داخل این فایل مینویسیم، آیا این کار امنیت کافی رو داره؟
لطفا در مورد امنیت این وب سرویس ها هم کمی توضیح بدید متشکرم
وقتی که دیتابیس و وب سایت روی یک وب سایت باشه،اصلا امنیت اتصال نیازی به بررسی نداره چون توی یه سرور اتفاق میفته.مثل نوشتن localhost.
اگر روی سرور دیگه باشه هم امنیتش ربطی به php نداره.و امنیتش توی یه لایه دیگه انجام میشه.
در کل php که هزاران ارگان بین المللی از آن استفاده میکنن مشخص است که زبان امنی است . در هر صورت ما داریم برنامه های تحت لوکال میزنیم . تحت هاست هم اگر بگیرید به شما user-pass استاندارد خواهد شد . اگر هم تحت سرور باشه که دیگه دست خودتونه .
من نباید این را بگویم ولی برنامه هایی که توسط اشخاص نوشته میشود برنامه های کوچک یا در سطح متوسطن اگر هکر امنیتی هم در کار باشد به طبع برنامه ها ما ها را زیر نظر ندارند . قالب برنامه های بزرگ مانند بحث های حساس و کلیدی و برنامه هایی که توسط ارگانهای بزرگ نوشته میشود زیر نظر این گروه افراد قرار میگرند .
من خودم تا به حال مشکل امنیتی نداشتم ولی اگر این موضوع شما را ناراحت میکند در فوروم های php و یا سایت های گوناگون میتوانید به دنبال خواستتون باشید .
star_game
یک شنبه 26 مرداد 1393, 09:35 صبح
harani عزیز ما همچنان منتظر ادامه آموزش هستیم.
با تشکر
harani
چهارشنبه 29 مرداد 1393, 20:48 عصر
جلسه ی ششم دریافت داده از وب سرویس در اندروید : قسمت اول
خب در این جلسه میخوام انتظار را پایان بدم و از سایت هایی ایجاد کردیم بتوانیم داده بگیریم .
لازم به ذکر است بهتر است کسانی ماباقی آموزش ها را دنبال میکنند آموزش های ماقبل را درست متوجه شده باشند.
در ادامه ی آموزش هامون ما یک پروژه ی دفترچه تلفن میسازیم و در اندرویدمان اطلاعات را دریافت و همچنین اطلاعاتی را به سرور ارسال میکنیم . پروژه ما شامل فیلدهای نام , نام خانوادگی , شماره تلفن , نشانی محل سکونت است . هر فیلدی را که شما خواستار آن باشید میتوانید اضافه کنید .
(عکس هم کار خاصی ندارد فقط یکم متفاوت است برای عکس کافی است که آن را در جایی آپلود کنیم و لینک دانلود مسقیم آن را به دیتابیس بدهیم و در اندرویدمان آن را دانلود و در حافظه گوشی ذخیره کنیم فکر کنم متوجه شدید ولی اگر فرصت شد آن را هم میگویم ولی فعلاًٌ بدون عکس پیش میریم)
خب بریم سراغ برنامه :
یک پروژه وب با نام TelBook ایجاد کنید .
در اگر با ساخت پروژه مشکل دارین جلسه ی سوم وب نویسی با PHP را مطالعه کنید .
بچه ها بیاد داشته باشید که صفحه ی اول php را همیشه با نام index ذخیره کنید .
خب در phpmy admin مربوط به wamp را انتخاب میکنیم تا وارد صفحه ساخت دیتابیس شویم .
در tab databse را انتخاب میکنیم تا دیتابیس جدید را ایجاد کنیم . نام دیتابیس را تایپ کرده (مثلاً teldb)
و در قسمت بعدی utf8-general-ci انتخاب میکنیم .سپس برروی پنل چپ نام دیتابیس ساخته شده را میابید و روی آن کلیک میکنید تا بتوانید جدول آن را بسازید .اسم جدول را نیز teldata میگذارم .و تعداد ستونهای مورد نیاز را برابر 5 قرار میدهیم .
به ترتیب فیلدها را پر میکنیم
1- name = person_id / type = mediumint / attributes = unsigned / index = primary /
و تیک a_I به مهنای auto increment را فعال میکنیم .
و فیلد 2-3-4 بعدی را به ترتیب برابر person_name , person_family , person_tel بهمراه type برابر با varchar و lenght 255 قرار میدهیم .
و فیلد آخر هم address و type برابر با Text میگذارید و در نهایت جدول نهایی را save میکنید .
اگر دوستان در مفاهیم دیتابیس مشکلی دارند این لینک را بررسی کنند http://www.w3schools.com/sql/sql_datatypes.asp
جدول دیتابیسمون هم ساختیم .حالا میخواهیم چند رکورد به دیتابیسمون اضافه کنیم .
در پنل سمت چپ در زیر شاخه دیتابسمون جدول ایجاد کرده را انتخاب میکنیم .
در tab ها browse و structure ,... را بیابید تب insert را انتخاب کنید حال چند رکورد به جدولتان اضافه کنید .
طبیعتاً چون person_id از جنس autoincrement هست نیازی به پر کردن آن نیست .
در تب browse میتوانید داده های اضافه شده خودتان را ببینید و آنها را ویرایش و یا حذف و با کپی تهیه نمایید .
اینهم کمی توضیح بیشتر جلسه قبل برای اونایی که کمی مشکل داشتند .
حال بریم سراغ فایل php خودمان .
در این قسمت میام کل داده های دیتابیس را داخل یک آرایه میریزیم و در قالب json چاپ میکنیم .
من در جسله ی قبل به عنوان تمرین گفتم که شکل خروجی جلسه ی پیش را به شکل یک آرایه چاپ کنید(اطلاعات دیتابیس را در قالب یک آرایه نمایش دهید) . جواب آن در قالب این جلسه به شکل زیر است .
<?php
$con = mysqli_connect("localhost","root","","teldb");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"select * from teldata");
$output = array();
$fetch_data = array();
while ($row = mysqli_fetch_array($result)){
$fetch_data['person_id'] = $row['person_id'];
$fetch_data['person_name'] = $row['person_name'];
$fetch_data['person_family'] = $row['person_family'];
$fetch_data['person_tel'] = $row['person_tel'];
$fetch_data['address'] = $row['address'];
$output[] = $fetch_data;
}
echo json_encode($output);
mysqli_close($con);
خروجی که در قسمت localhost دیده میشود به شکل زیر است :(در اینجا تست کنید که بایستی توسط وارد کردن IP شما خروجی ظاهر شود .
چناچه توسط IP با مشکلی روبرو هستید به جلسه ی دوم مراجعه نمایید)
[{"id":"1","name":"ehsan","family":"harani","tel":"09123456789","address":"Address1"},{"id":"2","name":"Site","family":"BarenameNevis","tel":"09197834567","address":"mir mojtahedi"}]
(دوستان ما یک آرایه داریم که هر عضو آن داده های دیتابیس است در واقع [] نشان دهنده ی یک آرایه و {} در واقع یک شی json است .)
از سمت وب ok شدیم حال همین مقادیری که چاپ میکنیم رو میخواهیم در اندروید نشون بدیم دیگه طراحی از طرف اندروید دست خودتان است من دوستان دارم تمام داده ها رو تو یه textview بگیرم .
یک سرور داریم و یک کلاینت ، سرور در حقیقت ارائه دهنده خدمات و کلاینت به معنای درخواست دهنده ی خدمات است پس وب لوکال ما یک سرور معرفی میشود و ما که اندروید هستیم کلاینتیم .
برای اینکه خودمان را به عنوان یک کلاینت تعریف کنیم . میگوییم .
HttpClient client = new DefaultHttpClient();
در اینجا در مورد DefaultHttpClient باید بگویم برای ساخت یک httpclient باید شی ای را از آن new کنیم ولی خود apache کلاس DefaultHttpClient را ساخته و مقادیر پیش فرض مورد نیاز را در آن قرار داده و شما را از زحمت آن فارغ کرده .
حال کلاینت مربوطه میخواهد به شیوه ای با سرور ارتباط برقرار کند .دو روش برای ارسال خواسته مان داریم یکی get و دیگری post است . که بهتر است از post استفاده شود چرا که به نوعی get نیز محسوب میشود.
برای ایجاد یک خواسته به روش post داریم :
HttpPost post = new HttpPost("http://192.168.2.212/telBook/");
همانطور که میبینید ما خواسته ی خودمان را از سایتی که ایجاد شد طلب کردیم . در اینجا بایستی از ip خودتان استفاده کنید و ن از localhost دلیلشم هم این است که وقتی که emulator ران میکنیم سایت telBook در emulator موحود نیست و برنامه کرش میکند پس برای همین ip کامپیوتر خودمان را وارد مکنید .
برای اجرای دستوراتمان از متد execute استفاده مکنیم (مانند اجرای query و دستورات در sql) که این اجرای از جنس HttpResponse می باشد .
try {
HttpResponse response = client.execute(post);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
این دستور شامل بلاک try-catch است که در catch اول نحوه ی ارتباط نادرست اتفاق میوفتد و در catch بعدی میگوید چنین سایت (مقصدی) وجود ندارد .
در صفحات اینترنتی چیزی با نام StatusCode وجود دارد درواقع این عدد به شما میگوید که ارتباط شما با وب مربوطه به چه شکل بوده به عنوان مثال شما خطای معروف 404 Not Found (http://en.wikipedia.org/wiki/HTTP_404) را میشناسید که در خواست شما موفقیت آمیز نبوده در این جا 404 Status Code می باشد .مثلاً اگه Status Code 200 باشد . یعنی ارتباط درست و موفقیت آمیز بود . برای اطلاعات بیشتر http://en.wikipedia.org/wiki/List_of_HTTP_status_codes مراجعه کنید .
برای گرفتن status codes در اندروید میگویم .
int code = response.getStatusLine().getStatusCode();
Log.i("Status Code", code + "");
حال برنامه را اجرا کنید برنامه کرش کرد ;-) چون permission اینترنت ندادی اگه دوباره کرش کرد بایستی کدهای نوشته شده ی بالا را در یک Thraed بیندازید چون thread network متفاوت است با thread برنامه . در نهایت باید در قسمت log ها به رنگ سبز (info) کد 200 را با tag Status Code ببینید خب این جلسه هم تموم شد . جلسه ی بعد نحو ه ی گرفتن داده های وب ایجاد شده را در اندروید را میگم (که من در textview میریزم) به امید استقبال شما دوستان .
harani
پنج شنبه 30 مرداد 1393, 18:20 عصر
جلسه ی هفتم دریافت داده از وب سرویس در اندروید : قسمت دوم
وارد بحث گرفتن داده ها از وب سرویس ایجاد شده میشویم .
یکی از دوستان بپرسیده بود که من زمانی که در دیتابیسم از فارسی استفاده میکنم به شکل ؟؟؟ نشون داده میشود .
خب در اینجا میخواهیم یکی از فنون آخر بروسلی رو به شما بگم برای رفع این مشکل کافی است بعد از connection تون به صورت زیر عمل کنید
<?php
$con = mysqli_connect("localhost","root","","teldb");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($con,"UTF8");
عبارت mysqli_set_charset داده های دیتابیس را به untf8 تبدیل میکند .
اگر خروجی شما به شکل unicode در آمد مشکلی وجود ندارد چرا که مفسر آن را به این شکل تبدیل کرده است و در اندروید خواهی دید . که داده ها به صورت درست ظاهر میشود .
تا اینجا دیدم که چحوری توانستیم به وب سرویسمان وصل بشیم .و توسط status code برابر با 200 متوجه شدیم که ارتباط موفقیت آمیز بوده است .
حال داده هایی را که در دیتابیس ذخیره کردیم میخواهیم مثلاً در یک textview نمایش دهیم .
پس از قبل داشتیم :
int code = response.getStatusLine().getStatusCode();
Log.i("Status Code", code + "");
در این قسمت ما نیاز به توابعی از HttpResponse با نام getEntity() که در واقع دسترسی به محتوای سایت را برای ما امکان میسازد چیزی شبیه getintent خودمان است و برای اینکه محتویات سایت را ببینیم بایستی متد getcontent که از جنس inputstream هست را فرا بخوانیم .
پس به زبان کدی داریم
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
response.getEntity().getContent();
}
برای آنکه آن این محتوی را داخل ui بیاوریم طبیعتاً بایستی آن را به string تبدیل کنیم . مقدار getcontent(); از جنس inputstream است و تبدیل کردن آن به string نیازمند کار با فایل در جاواست که همگی در آن استادند .اگرم کسی بلد نبود میتونه بصورت کلیشه ای از متد زیر استفاده کنه :
String StreamToString(InputStream in)
{
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder total = new StringBuilder();
String line;
try
{
while ((line = r.readLine()) != null) {
total.append(line);
}
return total.toString();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
پس در نهایت داریم :
private String result;
//=============def class=======
if (code == 200) {
result = StreamToString(response.getEntity().getContent());
Log.d("GetText", result);
}
الان همینو در textview مربوطه settext کنید چه میبینید ؟ خروجی ما چاپ می شود .اگه برنامه کرش کرد یا permission ندادید یا اینکه باید کدهای net را تو thread بذارید . حال میخواهیم داده ها را به تفکیک بگیریم .
داده ای که ما داریم به اندروید میفرستیم . به شکل
[{"id":"1","name":"ehsan","family":"harani","tel":" 09123456789","address":"Address1"},{"id":"2","name ":"Site","family":"BarenameNevis","tel":"091978345 67","address":"mir mojtahedi"}]
می باشد .
که ما آن را گرفتیم و در یک string result نمایش دادیم .
این داده ابتدا با [ و در پایان با ] نشان داده شده است .و هر عضو آن با , جدا شده به این نوع داده JSONArray میگویند . هر عضو داده با } شروع و با { تمام میشود و هر عضو به صورت key-value پر میشود و با , از هم جدا میشود به این نوع داده که بصورت {"key1":"value1","key2":"value2"} نمایش داده میشود JSONObject میگوند . پس JSONArray آرایه ای است که هر عضو آن یک JSONObject است که مابین [] قرار میگیرد .
اگر پردازش و ظاهر این خروجی json برای شما گیج کننده است میتوانید تو گوگل سرچ کنید json viewer آنگاه هزاران سایت برای شما باز میشود با انتخاب هر کدام شما وارد سایتی میشوید که میتوانید این text ناخوانا را بصورت گرافیکی و خوانا مشاهده نمایید .در اینجا خواهی دید که کاراکترهایی که بصورت unicode در پنجره برازر شما بوده به شکل فارسی رویت میشود .
حالا که با json آشنا شدیم برای تفکیک داده ی string result از آن استفاده میکنیم .
خود من میخواهم تمام داده ها را در یک string بریزم شما میتونید آن را در دیتابیس بریزید یا هرجوری که میخواین آن را ذخیره کنید .
من برای اینکار از متد زیر استفاده میکنم .
public String getData() {
final StringBuilder sb = new StringBuilder();
try {
JSONArray array = new JSONArray(result);
for (int i = 0 ; i < array.length() ; i++){
JSONObject object = array.getJSONObject(i);
sb.append(object.getLong("person_id"));
sb.append(object.getString("person_name"));
sb.append(object.getString("person_family"));
sb.append(object.getString("person_tel"));
sb.append(object.getString("address"));
}
return sb.toString();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
حالا من اینو متد را در یک کنترل تکست ویو settext میکنم . بازم میگم دیگه این قسمت سلیقه ای هر جوری که خواستید میتونید رفتار کنید میتونید برای زیباتر شدن یک structure بسازید و داده ها رو تو دیتابیس بریزید . و مثلاً هر قسمت رو تو یک cell در لیست ویو لود کنید .
بحث گرفتن داده رو گفتیم فقط میمونه که بحثه ارسال آن نیز را بگیم .
majnoon110
پنج شنبه 30 مرداد 1393, 18:54 عصر
ممنون از شما دوست عزیز
من خیلی خوشحالم که افرادی مثل شما هستند که اینقدر وقت میگذارند برای آموزش
این نحوه ی نکته به نکته درس دادن هم خیلی مفیده . و اگر کسی دقت کنه میتونه کاملا بحث رو از پایه یاد بگیره
اگر راجع به عکس ها هم مطلبی رو قرار بدید خیلی خوب میشه مثلا اینکه یک سری عکس رو اپلود کنیم یا اینکه از دیتابیس وب فراخوانی کنیم!
سپاس
m.a.d1992
جمعه 31 مرداد 1393, 01:10 صبح
سلام مهندس
آموزشات بی نظیره، واقعا دمت گرم که وقت میزاری و اینقد با حوصله و خوب توضیح میدی، هر چی بگم کم گفتم، خیلی خیلی خیلی ممنون
:تشویق::تشویق::تشویق::تشویق:: شویق::تشویق::تشویق::تشویق::ت ویق::تشویق:
Nevercom
یک شنبه 02 شهریور 1393, 16:05 عصر
یکی از دوستان بپرسیده بود که من زمانی که در دیتابیسم از فارسی استفاده میکنم به شکل ؟؟؟ نشون داده میشود .
خب در اینجا میخواهیم یکی از فنون آخر بروسلی رو به شما بگم برای رفع این مشکل کافی است بعد از connection تون به صورت زیر عمل کنید
بعضی وقتا ممکنه تنها با تنظیم Charset مربوط به کانکشن دیتابیس، باز هم حروف درست نمایش داده نشن
در این حالت خط زیر رو در ابتدای فایلی که قراره نتیجه ی نهایی رو echo کنه قرار بدید:
header('Content-type: text/html; charset=UTF-8');
smemamian
یک شنبه 02 شهریور 1393, 17:14 عصر
یکی از دوستان بپرسیده بود که من زمانی که در دیتابیسم از فارسی استفاده میکنم به شکل ؟؟؟ نشون داده میشود .
خب در اینجا میخواهیم یکی از فنون آخر بروسلی رو به شما بگم برای رفع این مشکل کافی است بعد از connection تون به صورت زیر عمل کنید
من بدین صورت عمل می کنم:
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8') ;
همچنین قبل از اضافه کردن مقادیربه DB از حرف N استفاده می کنم:
insert into yourtable (fname) values (N'$fname')
harani
یک شنبه 02 شهریور 1393, 20:50 عصر
بسیار عالی من از همه ی دوستان درخواست دارم برای بهتر شده آموزش هر کس نکته ای به ذهنش میرسه حتماً بیان کنه
من بدین صورت عمل می کنم:
mysql_set_charset('utf8');
من خودم از توابع mysql استفاده نمیکنم معمولاً از توابع mysqli استفاده میکنم . توابع mysqli در واقع بهینه شده ی mysql است احتمال اینکه داده ها با توابع mysqli مورد injection قرار بگیرد خیلی کمتر از myql است .
نهایت تشکر از شما دوستان را دارم .
Nevercom
یک شنبه 02 شهریور 1393, 21:26 عصر
حالا که بحث درمورد دریافت داده هست، بد نیست به مشکلاتی که ممکنه پیش بیاد و دیباگ کردنش خیلی اعصاب خوردی داره هم اشاره بشه.
موضوع اینه که سرورهای مختلف، کانفیگ متفاوتی دارن و البته ممکنه نسخه های متفاوتی از PHP و Apache و... نصب باشه (یا حتی سیستم عامل ها متفاوت)، این باعث میشه بعضی وقتا در ابتدای پاسخی که دریافت می کنید، کاراکترهایی اضافه بشه که باعث میشه پارس کردن نتیجه (و بخصوص تبدیلش به JSONObject) با مشکل مواجه بشه.
درمورد من فقط یک کاراکتر اضافه میشد و من این قسمت رو به کدها اضافه کردم:
final int ascii = out.charAt(0); return ascii >= 33 & ascii <= 126 ? out : out.substring(1);
درستش اینه که در یک حلقه چک کنید تا زمانی که به یک کاراکتر معنی دار نرسیدید، اون کاراکتر رو حذف کنید.
در PHP اگر قبل از تگ <?Php کاراکتری (مثلاً Space) وجود داشته باشه، باعث میشه اول اون چاپ بشه و بعد خروجی شما که اون هم میتونه مشکل ساز بشه.
MSHService
دوشنبه 03 شهریور 1393, 00:21 صبح
من یه سوال دارم تو این مبحث اون قسمت JSON ، اگه داده ها فارسی بوذن اندروید چطور اونا رو نشون بده؟!!
harani
دوشنبه 03 شهریور 1393, 13:43 عصر
من یه سوال دارم تو این مبحث اون قسمت JSON ، اگه داده ها فارسی بوذن اندروید چطور اونا رو نشون بده؟!!
اگه متدهای فارسی کردن من
mysqli_set_charset($con,"UTF8");
و سایر دوستان پس از connection درج کنید .
مشکلی از در خصوص نشون دادن فارسی وجود ندارد
فارسی نشون میده
gilas1368
سه شنبه 04 شهریور 1393, 17:45 عصر
کدی ک ب من میده 500ه، دلیلش چیه؟
البته من دارم از وب سرویسی ک با دات نت نوشتم استفاده میکنم
harani
چهارشنبه 05 شهریور 1393, 17:14 عصر
کدی ک ب من میده 500ه، دلیلش چیه؟
البته من دارم از وب سرویسی ک با دات نت نوشتم استفاده میکنم
کد 500 خطای سرور است . اگر شما از هاست استفاده میکنید بهتر است با پشتیبانی هاست خود ارتباط برقرار کنید
میتوانید از لینک زیر جهت راهنمایی استفاده کنید
http://www.takwd.ir/joomla/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D9%88%D8%B4-%D8%B1%D9%81%D8%B9-%D8%AE%D8%B7%D8%A7%DB%8C-HTTP-Error-500-Internal-server-error.html
harani
پنج شنبه 06 شهریور 1393, 01:03 صبح
جلسه ی هشتم ارسال داده از اندروید به وب سرویس : پایان مقاله آموزشی قسمت اول
خب در اینجا نیز بخش پایانی بحث آموزشیمون رو مطرح میکنیم : بحث ارسال داده از دستگاه به وب سایت :
ارسال داده رو فقط من حالت insert شو میگم که خودتون delete , update , سایر کوئری ها دیگه میتونید مدیریت کنید :
در این قسمت ما میتوانیم یک فایل جدا php به نام insert (به عنوان مثال) و یا function ای ایجاد کنیم و عملیات اضافه کردنو تو اون بریزیم . بر حسب راحتی و سلیقه هر کدام را که خواستید میتوانید انتخاب کنید : که من روش function ای(همون متد خودمون در php) را انتخاب میکنم :
کد php من بصورت زیر میشود :
<?php
if (isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
}else{
echo "Error";
exit();
}
if ($action=="read"){
read();
}else if ($action == "insert"){
insert();
}
function connection(){
$con = mysqli_connect("localhost","root","","teldb");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($con,"UTF8");
return $con;
}
function read(){
$con = connection();
$result = mysqli_query($con,"select * from teldata");
$output = array();
$fetch_data = array();
while ($row = mysqli_fetch_array($result)){
$fetch_data['person_id'] = $row['person_id'];
$fetch_data['person_name'] = $row['person_name'];
$fetch_data['person_family'] = $row['person_family'];
$fetch_data['person_tel'] =$row['person_tel'];
$fetch_data['address'] = $row['address'];
$output[] = $fetch_data;
}
echo json_encode($output);
mysqli_close($con);
}
function insert(){
$name = $_REQUEST['person_name'];
$family = $_REQUEST['person_family'];
$tel = $_REQUEST['person_tel'];
$address = $_REQUEST['address'];
if (!empty($name) && !empty($family) && !empty($tel) && !empty($address)){
$con = connection();
$result = mysqli_query($con,"insert into teldata values (0,'$name','$family','$tel','$address')");
mysqli_close ($con) ;
}
}
?>
ببنید من تمامی کدهای بالا را تماماً توضیح دادم اگه جای ابهامی دارین بدانید که تمرین شما کافی نبوده .
در اینجا isset هم مثل empty که چک مکنه که مقدار ارسالی طرف خالی نباشه :
فقط یه توضیح مختصر از کد بالا بگم :
متغیر action را به وب سایت با مقادیر read و یا insert به وب ما میفرستد که اگر این متغیر read باشد متد read و در غیر اینصورت اگر insert باشد متد مربوط به insert نمایش داده میشود .
در جلسه ی پنجم گفتیم که $_REQUEST در واقع تلفیقی از $_GET و هم $_POST است .
در لوکال هاست را بالا بیاورید و در قسمت url اضافه کنید :
?action=read
میبینید که تمام داده ها نمایش به شکل json نمایش داده شد .
حال بیایم سراغ اندروید یک اکتیوتی new کنید و لایوت آن را مثل فرم طراحی کنید (جهت اضافه کردن داده ها به وب پس 4 تا ادیت تکس داریم با یک دکمه send)
برای ساخت یک json object در php ما چه کار میکردیم ؟(امیدوارم json object و json array را از جلسات پیش بیاد داشته باشید در واقع json object یک آرایه ای بود که بدون هیچ نظم و ترتیبی پر میشد و بصورت json
encode میشد در جلسه ی قبلی توضیح داده شد)
مثلاً میگفتیم :
$arry = array();
$arry['name']="me";
$arry[3]=125;
$arry['code']=200;
این آرایه چون هیچ نظم خاصی ندارد (یعنی ایندکس هاش از 0 تا n به ترتیب پر نشده) پس این آرایه در واقع یک شی محسوب میشود .
همین را داشته باشید دقیقاً تو اندروید هم میام به همین صورت عمل میکنیم :
برای ایجاد یک مقدار key-value از کلاس BasicNameValuePair که در واقع از جنس NameValuePair می باشد (مثل اینکه میگفتیم
List<?> l = new ArrayList<?>();
) استفاده میکنیم :
پس از call کردن کنترل هامون تو کلاس activity تو onclick دکمه میگیم :
NameValuePair name = new BasicNameValuePair("person_name", txtName
.getText().toString());
NameValuePair family = new BasicNameValuePair("person_family", txtFamily.getText().toString());
NameValuePair tel = new BasicNameValuePair("person_tel", txtTel.getText().toString());
NameValuePair address = new BasicNameValuePair("address", txtAddress.getText().toString());
حالا قبول دارید که تو php ما این عناصر را در یک آرایه میرختیم که مثلاً میشد :
{"code":"123","name":"ehsan} ما هم باید یک آرایه ای از key-value ها را پاس بدیم پس یک ArrayList<NameValuePair> باید درست کنیم و مقادیر بالا را توش اضافه میکنیم :
حال این آرایه ایجاد شده را بایستی به وب پاس بدیم :
از قبل یادتو هست دو خط کد زیر رو :( من اینا رو جلسات پیش کامل توضیح دادم )
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://192.168.2.222/telBook/");
و در ابتدا با هم دیدم که زمانی که در قسمت url برازر اضافه میکنیم ؟action=read متد read کلاس php مان صدا زده میشد و خروجی json به نمایش در میامد :
حال متد insert رو در اینجا استفاده مکنیم دقیقاً به همین روش : پس داریم :
HttpPost post = new HttpPost("http://192.168.2.222/telBook/?action=insert");
همه چی اماده است که این آرایه پر شده رو به وب پاس بدیم براحتی توسط متد setEntity که بلاک try-catch هست اینکار رو میکنیم :
HttpPost post = new HttpPost("http://192.168.2.222/telBook/?action=insert");
try {
//item = ArrayList<NameValuePair>
post.setEntity(new UrlEncodedFormEntity(item));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
از خود میپرسید کلاس UrlEncodedFormEntity چیست جلسه ی پنجم را بیاد آورید گفتم که وارد کردن مقادیری نطیر spce در url امکان پذیر نیست و باید از %20 (URL Encoding Reference (http://www.w3schools.com/tags/ref_urlencode.asp)) استفاده کنیم پس آیا در اندروید راهی وجود ندارد که این کاراکترها رو خودش به طور اتومات جایگذاری کند این همان کاری است که توسط کلاس UrlEncodedFormEntity انجام میشود پس از ارسال داده حتماً mysql مربوط به phpMyadmin wamp رو رفرش و چک کنید که ببنید داده اضافه شده است یا خیر .اگر ok نبود یک جای از مسیر را نادرست رفتید . یادتو باشه که بهتره کدهای نت تون رو تو یک thread بذارید
delete و update و سایر کوئری هام که دیگه خودتون میتونید بزنید .
خب این هم از این مقاله ی آموزشی که خیلی از دوستان بدنبالش بودن .البته با اینکه فکر میکردم جمعیت علاقه مندان این بحث زیاد باشه ولی زیاد لایک نخورد .
در هر صورت امیدوارم این مباحث کمک بزرگی برای دوستان کند .
و من دو خواسته از دوستان دارم یکی اینکه ذکات علمتون بدید اگه چیزی بلدید و میتونید به دیگران کمک کنید حتماً این کار رو بکنید چرا که واقعاً برکتش به زندگیتون میاد .
و خواسته دیگم اینکه مباحث این مقاله را حتی شده بارها بارها تمرین کنید تا بتوانید پروژه های سمت وب سرویس هم خودتون handle کنید .
اگه میخواهید مطالب بیشتری سمت php را فرا یگیرد بهترین رفرنس سایت
http://www.w3schools.com/PHP/
می باشد .
دوستان سلام من شاید خیلی وقت که سر نزدم . که پوزش میطلبم .و مجبور شدم برای اینکه همه باز ببینند آن را در مبحث آموزشی بگنجانم
خیلی از کدهای گفته شده در اندروید و هم php ورژنهای جدیدتر تقریبا منسوخ شدند شما میتوانید در خصوص مبحث وب سرویس android برای موارد جدیدتر از مفاهیم زیر استفاده کنید .
۱- استفاده از HttpUrlConnection / HttpsUrlConnection
2- استفاده از کتابخانه volley
3- استفاده از کتابخانه retrofit
۴- استفاده از کتابخانه ساده و سربع Fast-Android-Networking
هر کدوم معایب و مزایای خاص خودشونو دارند که هر کس بر حسب علاقه میتوانید آنها را دنبال کنید با تشکر.
NeoFighT
پنج شنبه 06 شهریور 1393, 02:00 صبح
آقا واقعا دستتون درد نکنه،خیلی مطلب مفیدی بووود.:چشمک:
c0mmander
پنج شنبه 06 شهریور 1393, 02:08 صبح
خوب مقاله خوب و کاربردیت به پایان رسید. یک خسته باشید حسابی که داخل این سه مال با توجه به مشغله ها اومدی و زکاتت رو دادی.. خدا قبول کنه.:تشویق:
r_khan
پنج شنبه 06 شهریور 1393, 15:16 عصر
اگر ارسال اطلاعات به وب سرویس و دریافت اطلاعات ازوب سرویس را درمونو اندروید هم توضیح بدهید ممنون میشم
harani
پنج شنبه 06 شهریور 1393, 16:30 عصر
دوستان اینم سورس مقاله آموزشی اگه خواستید میتونید استفاده کنید . http://uploadazad.com/uploads/tov4_telbook.rar
اگر ارسال اطلاعات به وب سرویس و دریافت اطلاعات ازوب سرویس را درمونو اندروید هم توضیح بدهید ممنون میشم
من از مونو استفاده نکردم ولی خود سایت xamarin توضیحاتی در این رابطه داده است این لینک را نگاه کنید . http://developer.xamarin.com/guides/cross-platform/application_fundamentals/web_services/
NeoFighT
جمعه 07 شهریور 1393, 16:26 عصر
harani جان اگه میشه یه توضیحه کوچیکی هم در رابطه با برنامه نویسی سوکت بدین.
سرور چطور میتونه اطلاعاتی رو با استفاده از tcp بفرسته؟
با تشکر
harani
جمعه 07 شهریور 1393, 19:30 عصر
ارتباط سوکت از طریق دورن شبکه و توسط ip صورت میگرد .
من لینک زیر را برای راهنمایی بیشتر که توضیحات جامع تری نیز هست پیشنهاد میدهم :
http://en.wikipedia.org/wiki/Network_socket
و مثال اندرویدیشم بصورت زیر است :
http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/
star_game
یک شنبه 09 شهریور 1393, 10:09 صبح
ضمن تشکر از harani عزیز بابت آموزش بسیار خوبش من هنوز موفق به دریافت اطلاعات از سرور نشدم و ارور میده(جلسه ششم قسمت اول)
میشه راجع به thread هم توضیح بدهید من نمی دونم مشکل از کجاست؟؟
[2014-08-31 10:34:06 - telbook] ActivityManager: Warning: Activity not started, its current task has been brought to the front
harani
یک شنبه 09 شهریور 1393, 16:47 عصر
ضمن تشکر از harani عزیز بابت آموزش بسیار خوبش من هنوز موفق به دریافت اطلاعات از سرور نشدم و ارور میده(جلسه ششم قسمت اول)
میشه راجع به thread هم توضیح بدهید من نمی دونم مشکل از کجاست؟؟
[2014-08-31 10:34:06 - telbook] ActivityManager: Warning: Activity not started, its current task has been brought to the front
اینی که شما زدی ارور برنامه س و به این دلیل که برنامه ای که دارید اجرا میکنید در حال حاضر اجراست خطای خاصی نیست . مشکل را در پنجره ی logcat ببینید ن پنجره consol
thread هم چز مباحث جاواست شما بایستی در جاوا به یک مهارتی برسید سپس بحث وب سرویس را دنبال نمایید فکر کنم برای شما زود باشد .
harani
یک شنبه 09 شهریور 1393, 19:19 عصر
دوستانی که علاقه دارند آپلود و یا گرقتن عکس وب سرویس هم یاد بگیرن توسط لایک کردن موضوع درخواست خود را مطرح کند اگر استقبال شد این موضوع رو هم اضافه میکنم .
mjnikbn
یک شنبه 09 شهریور 1393, 21:29 عصر
منتظر آپلود و یا گرقتن عکس وب سرویس
barnamenevisjavan
سه شنبه 11 شهریور 1393, 22:59 عصر
سلام دوستان من یه نمونه پیدا کردم و الان بصورت عالی کار میکنه فقط با حروف فارسی مشکل داره تمام توضیحاتو هم خوندم اما جواب نداد و بصورت علامت ؟ ذخیره میشه این کدهای php هستش:
کانفیگ :
<?php
/*
* All database connection variables
*/
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "androidhive"); // database name
define('DB_SERVER', "localhost"); // db server
?>
اتصال :
<?php
/**
* A class file to connect to database
*/
class DB_CONNECT {
// constructor
function __construct() {
// connecting to database
$this->connect();
}
// destructor
function __destruct() {
// closing db connection
$this->close();
}
/**
* Function to connect with database
*/
function connect() {
// import database connection variables
require_once __DIR__ . '/db_config.php';
// Connecting to mysql database
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
// Selecing database
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
// returing connection cursor
return $con;
}
/**
* Function to close db connection
*/
function close() {
// closing db connection
mysql_close();
}
}
?>
اینسرت :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
/*
* Following code will create a new product row
* All product details are read from HTTP Post Request
*/
// array for JSON response
$response = array();
// check for required fields
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// mysql inserting a new row
$result = mysql_query("INSERT INTO products(name, price, description) VALUES(N'$name', N'$price', N'$description')");
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "Product successfully created.";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>
</body>
</html>
harani
چهارشنبه 12 شهریور 1393, 08:53 صبح
دوست عزیز شما اگر شما قصد کمک داشته باشید خیلی عالی . اینی را که شما نوشتید خوب بود که توضیحی در هر قسمت آن درج کنید این چیزی را که شما نوشتید من در 8 قسمت به دوستان آموزش دادم دوستانی که این تایپک را دنبال میکنن افراد علاقه مندی بودند که با در رابطه با بحث وب سرویس آشنایی نداشتند و یا کم آشنا بودن این کد شما را به عنوان یک مثال خوب برای آموزشها میتوان در نظر گرفت ولی جاش اینجا نبود .چرا که ممکن باعث گیج شدن دوستان شود .
توابع mysql در حال حاضر استفاده ای ندارد و جایگزین آن توابع mysqli است . که در واقع بهبود یافته ی توابع mysql است .
اگه میخواین آموزشی بذارید یک آموزش با توضیحات کامل باشه ن copy-paste مطلب
در نهایت من تشکر فراوان را از شما دارم .برای رفع مشکل فارسی در صفحه ی 1 همین تاپیک توضیح داده شده است .میتوانید به آن مراجعه کنید
barnamenevisjavan
چهارشنبه 12 شهریور 1393, 12:54 عصر
دوست عزیز شما اگر شما قصد کمک داشته باشید خیلی عالی . اینی را که شما نوشتید خوب بود که توضیحی در هر قسمت آن درج کنید این چیزی را که شما نوشتید من در 8 قسمت به دوستان آموزش دادم دوستانی که این تایپک را دنبال میکنن افراد علاقه مندی بودند که با در رابطه با بحث وب سرویس آشنایی نداشتند و یا کم آشنا بودن این کد شما را به عنوان یک مثال خوب برای آموزشها میتوان در نظر گرفت ولی جاش اینجا نبود .چرا که ممکن باعث گیج شدن دوستان شود .
توابع mysql در حال حاضر استفاده ای ندارد و جایگزین آن توابع mysqli است . که در واقع بهبود یافته ی توابع mysql است .
اگه میخواین آموزشی بذارید یک آموزش با توضیحات کامل باشه ن copy-paste مطلب
در نهایت من تشکر فراوان را از شما دارم .برای رفع مشکل فارسی در صفحه ی 1 همین تاپیک توضیح داده شده است .میتوانید به آن مراجعه کنید
ممنون اما همونطور که گفتم از روش های گفته شده استفاده کردم اما متاسفانه مشکل داره و فارسی ؟ ثبت میشه اگر ممکنه شما کدهارو اصلاح کنید
harani
چهارشنبه 12 شهریور 1393, 18:48 عصر
ابتدا تگ title رو پاک کن و به جای تگ meta بنویس <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
دوماً شما بایستی زمانی که دیتابیس را میسازید در قسمت callation مقدار utf خود را به utf8-general-ci تغییر دهید .
سوماً در قسمت php بایستی مقادیر زیر را درج کنید (پس از کانکشن)
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8') ;
اگر این نکات را رعایت کنید نباید در خصوص فارسی نشان دادن مشکلی پیش اید .
از این پس سعی کنید از توابع mysqli استفاده کنید .
barnamenevisjavan
چهارشنبه 12 شهریور 1393, 20:18 عصر
ابتدا تگ title رو پاک کن و به جای تگ meta بنویس <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
دوماً شما بایستی زمانی که دیتابیس را میسازید در قسمت callation مقدار utf خود را به utf8-general-ci تغییر دهید .
سوماً در قسمت php بایستی مقادیر زیر را درج کنید (پس از کانکشن)
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8') ;
اگر این نکات را رعایت کنید نباید در خصوص فارسی نشان دادن مشکلی پیش اید .
از این پس سعی کنید از توابع mysqli استفاده کنید .
ممنون دوست عزیز با این کار الان اطلاعات رو از دیتابیس بدون مشکل میخونه فقط وقتی که از برنامه اندروید یه رکورد اضافه میکنم اطلاعات بصورت علامت ? ذخیره میشه توی کدهای جاوا هم باید کد خاصی قرار بدم؟
-------------------------------------------------------------
Update
تو کدهای جاوا توی متد POST باید یه تیکه کد utf-8 رو اضافه میکردم :D
میزارم اینجا شاید کسی لازمش شد
httpPost.setEntity(new UrlEncodedFormEntity(params,"utf-8"));
harani
چهارشنبه 12 شهریور 1393, 22:05 عصر
این رو هم استفاده کردید ؟ که در قسمت callation مقدار utf خود را به utf8-general-ci تغییر
تنها پیشنهادی به شما دارم این است که توابع mysql را به mysqli تغیر دهید (که مثل mysql فقط یک متغیر con اضافه تر میگرد)
ممکن است قسمت admin شما از فونت فارسی پشتیبانی نمیکند .
اگه ام جواب نگرفتید دیگه باید تو فوروم php سوالتون رو بپرسید .
یه سوال شما برای وب تون رابط کاربری میخواین ؟ اگه لازم نیست پس مشکلی نداره خود داده ها در وب بصورت ? باشد
barnamenevisjavan
چهارشنبه 12 شهریور 1393, 22:19 عصر
این رو هم استفاده کردید ؟ که در قسمت callation مقدار utf خود را به utf8-general-ci تغییر
تنها پیشنهادی به شما دارم این است که توابع mysql را به mysqli تغیر دهید (که مثل mysql فقط یک متغیر con اضافه تر میگرد)
ممکن است قسمت admin شما از فونت فارسی پشتیبانی نمیکند .
اگه ام جواب نگرفتید دیگه باید تو فوروم php سوالتون رو بپرسید .
یه سوال شما برای وب تون رابط کاربری میخواین ؟ اگه لازم نیست پس مشکلی نداره خود داده ها در وب بصورت ? باشد
ممنون تو پست بالا هم گفتم مشکل دیگه به کلی رفع شده فقط الان توی سی پنل هاست شخصیم فایل هارو آپلود کردم و اطلاعات رو تغییر دادم ولی برنامه کار نمیکنه آیا روی هاست شخصی کار نمیکنه؟
الان این خطارو میده
Warning: mysql_connect() [function.mysql-connect (http://shadoow.ir/login/android_connect/function.mysql-connect)]: Unknown MySQL server host 'http' (25) in /home/shadoowi/public_html/login/android_connect/db_connect.php on line 28
Unknown MySQL server host 'http' (25)
Warning: mysql_close(): no MySQL-Link resource supplied in /home/shadoowi/public_html/login/android_connect/db_connect.php on line 42
توی هاستم یه دیتابیس ساختم براش یه یوزر ساختم و فیلدهای موردنیاز هم ایجاد کردم و اطلاعات هاست رو داخل فایل کانکشن قرار دادم
harani
چهارشنبه 12 شهریور 1393, 23:30 عصر
این موضوع را با پشتیبانی هاستتون در میان بذارید شاید مشکل از هاست باشد . خطوط ارور گرفته رو هم بررسی کنید .
singel
جمعه 14 شهریور 1393, 00:16 صبح
با تشکر از دوست عزیزمان که زحمت کشیدند و این مطالب را در اینجا قرار دادن
من دو تا سوال داشتم
یک اینکه من هم مثل بعضی از دستان توی حروف فارسی مشکل دارم ، فقط در هنگام نمایش ، در دیتابیس درست ذخیره میشه ، تمام کارهای بالا را هم انجام دادم
دوم اینکه روشی که شما گفتید برای امنیتش که کار باید کرد که اطلاعات به صورت رمز نگاری رد و بدل بشه
باز هم ممنون
barnamenevisjavan
جمعه 14 شهریور 1393, 11:05 صبح
با تشکر از دوست عزیزمان که زحمت کشیدند و این مطالب را در اینجا قرار دادن
من دو تا سوال داشتم
یک اینکه من هم مثل بعضی از دستان توی حروف فارسی مشکل دارم ، فقط در هنگام نمایش ، در دیتابیس درست ذخیره میشه ، تمام کارهای بالا را هم انجام دادم
دوم اینکه روشی که شما گفتید برای امنیتش که کار باید کرد که اطلاعات به صورت رمز نگاری رد و بدل بشه
باز هم ممنون
بزودی اگه فرصت کنم یه نمونه کامل کامل (ثبت/حذف/ویرایش) بصورت کاملا آنلاین بدون مشکل فارسی قرار میدم
singel
جمعه 14 شهریور 1393, 12:46 عصر
دوست عزیز در مورد امنیت استفاده از این روش هم بحث کنید
esideli
چهارشنبه 19 شهریور 1393, 02:45 صبح
harani عزیز واقعا لطف کردین که این آموزش رو گزاشتین.
من فعلا قصد استفاده از وب سرویس رو ندارم ولی از اونجا که کمی php بلدم، فقط می خوام بدونم وقتی که از این کد استفاده میشه:
HttpPost post = new HttpPost("http://192.168.2.222/telBook/?action=insert");
مقدار متغیر action (http://192.168.2.222/telBook/?action=insert) به صورت post ارسال میشه دیگه؟
یه توضیح هم درباره مشکلات حروف فارسی در php بدم و روش حل مشکلاتش :
موارد زیرطبق تجربه شخصی بوده و امتحان شدس:
برای استفاده از زبان فارسی در صفحات وب باید به نحوه ذخیره و بازیابی اطلاعات توجه کنیم.
1_ ذخیره صفحات با رمزنگاری Encoding UTF-8 :
برای اینکه صفحات با محتوای فارسی به درستی ذخیره بشن باید با انکدینگ یو تی اف 8 ذخیره بشن. برای تعین انکدینگ صفحه ، قبل از ذخیره صفحه باید اون رو انتخاب کنیم که توی شکل نحوه تعیین انکدینگ در ویرایشگر phpDesigner رو نشون دادم:
123276
2_تعیین نحوه خواندن اطلاعات صفحه برای مرورگر:
برای اینکه صفحات فارسی بدرستی در مرورگر قابل مشاهده باشن باید از تگ <meta> درون تگ <head> به صورت زیر استفاده کنیم:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
3_ ذخیره و بازیابی اطلاعات فارسی از بانک اطلاعاتی:
موقع ساخت جدول برای ذخیره اطلاعات فارسی در بانک اطلاعاتی می تونیم از رمزنگاری utf8_unicode_ci یا utf8_persian_ci برای کالکشن هر جدول و هر ستون از جدول استفاده کنیم.
برای بازیابی اطلاعات هم قبل از زدن کوئری و بعد از اتصال به بانک از دو قطعه کد زیر جهت تعین رمزنگاری استفاده کنید:
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
البته اگه از دستورات mysqli استفاده می کنید i رو هم خودتون اضافه کنید.
singel
یک شنبه 23 شهریور 1393, 13:25 عصر
سلام
دوستان فرق بین api و وب سرویس چیه ؟؟؟
mfaridi
یک شنبه 23 شهریور 1393, 15:15 عصر
از کلاس volley برای وب سرویس استفاده کنید مزیتهای بیشتری داره و خود گوگل معرفیش کرده
harani
یک شنبه 23 شهریور 1393, 18:57 عصر
سلام
دوستان فرق بین api و وب سرویس چیه ؟؟؟
api یا Application Programming Interface در واقع رابط پیاده سازی توسط نرم افزار است که به دیگر برنامه ها اجازه میدهد با آن ارتباط برقرار کند .
در واقع وب سرویس نوعی api است که از http استفاده میکند (البته در برخی مانند soap از روشهای دیگری برای ارتباط مانند SMTP استفاده میکنند )
harani
یک شنبه 23 شهریور 1393, 18:58 عصر
از کلاس volley برای وب سرویس استفاده کنید مزیتهای بیشتری داره و خود گوگل معرفیش کرده
در این مورد میتوانید راهنمایی کنید که دوستان از جمله خود من بیشتر بدانیم .
ho3ein.3ven
یک شنبه 23 شهریور 1393, 22:45 عصر
سلام
ممنون از آموزش خوبتون
ببخشید کی طریقه آپلود کردن فایل رو میگید ؟
harani
دوشنبه 24 شهریور 1393, 08:18 صبح
سلام
ممنون از آموزش خوبتون
ببخشید کی طریقه آپلود کردن فایل رو میگید ؟
من خواستم آموزش آپلود و گرفتن عکس رو بگم ولی استقبال زیاد خوب نبود شما میتوانید از سایت w3schools آموزش خودتون رو ببنید
singel
دوشنبه 24 شهریور 1393, 08:52 صبح
دوست عزیز harani (http://barnamenevis.org/member.php?256621-harani)
با تشکر از راهنمایی ها و آموزش های خوبتون :تشویق::تشویق::تشویق::تشویق:: شویق:
در صورتی که براتون مقدوره به اموزشاتون ادامه بدین تا همه بتونیم از اطلاعات شما استفاده کنیم
علی اکبر
چهارشنبه 26 شهریور 1393, 18:52 عصر
سلام دوست عزیز
یه سئوال دارم این نرم افزارهای وایبر واتس اپ از وب سرویس استفاده می کنن یا سوکت؟
harani
چهارشنبه 26 شهریور 1393, 20:41 عصر
سلام دوست عزیز
یه سئوال دارم این نرم افزارهای وایبر واتس اپ از وب سرویس استفاده می کنن یا سوکت؟
از هر دوش
برای چت کردن از سوکت برای ارائه خدمات از وب سرویس .
amin_a_y
شنبه 05 مهر 1393, 14:48 عصر
سلام دوستان
ممنون بابت آموزش های خوبتون
فقط مشکل Forbidden برای من حل نشده
حتی پروژه رو بردم داخل www باز خطای Forbidden میده
harani
یک شنبه 06 مهر 1393, 09:58 صبح
سلام دوستان
ممنون بابت آموزش های خوبتون
فقط مشکل Forbidden برای من حل نشده
حتی پروژه رو بردم داخل www باز خطای Forbidden میده
عرض شود خدمت حضرت عالی که اولاً شما فایلای وب تون رو باید داخل یک فولدر (با نام پروژتون) بکنید و سپس در www کپی کنید اینکار را کردید ؟
سپس wamp رو بالا بیارین لوکال هاست رو تو url بنویسید سپس پروژتون رو انتخاب کنید .
پس از انتخاب به من بگید در قسمت url اسم پروژتون فقط میاد یا میزنه localhost/project name ? اگر اسم پروژتون فقط میاد شما یک / + localhost (یا ip تون) رو قبل از آن بیندازید .
dalmif
جمعه 16 آبان 1393, 12:31 عصر
سلام دوستان. ببخشید من توی بخش:
حال برنامه را اجرا کنید برنامه کرش کرد ;-) چون permission اینترنت ندادی اگه دوباره کرش کرد بایستی کدهای نوشته شده ی بالا را در یک Thraed بیندازید چون thread network متفاوت است با thread برنامه . در نهایت باید در قسمت log ها به رنگ سبز (info) کد 200 را با tag
Status Code ببینید
خب این جلسه هم تموم شد . جلسه ی بعد نحو ه ی گرفتن داده های وب ایجاد شده را در اندروید را میگم (که من در textview میریزم) به امید استقبال شما دوستان .
من چجوری باید Thread کنم؟
php رو بلدم کاملا اما توی اندروید چون 1 ماه دارم کار میکنم حرفه ای نیستم.
لطفا کمکم کنید کارم گیره.
البته من کلاسم رو اینطوری public class MainActivity extends Thread نوشتم اما به onCreate گیر میده
خیلی ممنون میشم کمکم کنید
virus2009
جمعه 16 آبان 1393, 21:31 عصر
با تشکر از Harani عزیز بابت آموزش خوبشون
سلام دوستان. ببخشید من توی بخش:
من چجوری باید Thread کنم؟
php رو بلدم کاملا اما توی اندروید چون 1 ماه دارم کار میکنم حرفه ای نیستم.
لطفا کمکم کنید کارم گیره.
البته من کلاسم رو اینطوری public class MainActivity extends Thread نوشتم اما به onCreate گیر میده
خیلی ممنون میشم کمکم کنید
به صورت پیش فرض تمامی کد هایی که شما داخل اکتیویتی ها قرار میدید بر روی Main thread اجرا میشن، به main thread بعضی مواقع UI Thread هم می گویند یعنی کار اون ساخت رابط کاربری اکتیویتی شما است، یعنی هرچی شما کد بیشتری داخل اکتیویتی اجرا کنید یا مثلا یک خط کد اجرا شدنش طول بکشد ( مثل گرفتن اطلاعات از دیتابیس ) زمان ساخته شدن رابط کاربری یا همان UI افزایش می یابد.
حال به دلیل اینکه وصل شدن به اینترنت و گرفتن اطلاعات از آن ممکنه بعضی اوقات بسته به سرعت کاکنشن کم و زیاد شود، اندروید به شما اجازه اجرا کردن کد های مربوط به اتصال به اینترنت را نمی دهد به همین دلیل شما با خطا مواجه میشوید.
در کل شما باید همیشه کارهایی که ربطی به UI ـتون ندارند رو در یک Thread جداگانه از Main Thread اجرا کنید تا از تاخیر در کارکرد نرم افزار جلوگیری شود.
حال برای ساخت یک Thread جدا گانه میتوانید از کد زیر استفاده کنید :
new Thread() {
@Override
public void run() {
// کدهای خود را در این قسمت قرار دهید.
}
}.start();
badname
شنبه 24 آبان 1393, 20:36 عصر
سلام دوستان ،
کسی هست با وب سرویس آقای کمالان کار کرده باشه منو راهنمایی کنه ؟
سابمیت میکنم "Error happened. Please try it later :(" بهم میده
log:
11-16 18:17:14.622: W/System.err(26145): at java.lang.Thread.run(Thread.java:841)
11-16 18:17:47.814: D/FragmentForm(26145): Response code is: 200
11-16 18:17:47.844: D/Server response:(26145): -1<br />
11-16 18:17:47.844: D/FragmentForm(26145): SendFormTask finished its task.
هر جوری تست میکنم نمیشه ، یسری ام 404 میداد
رفع شد پورت MySQL رو تنظیم نکرده بودم :)
badname
شنبه 01 آذر 1393, 17:28 عصر
جلسه ی هفتم دریافت داده از وب سرویس در اندروید : قسمت دوم
وارد بحث گرفتن داده ها از وب سرویس ایجاد شده میشویم .
یکی از دوستان بپرسیده بود که من زمانی که در دیتابیسم از فارسی استفاده میکنم به شکل ؟؟؟ نشون داده میشود .
خب در اینجا میخواهیم یکی از فنون آخر بروسلی رو به شما بگم برای رفع این مشکل کافی است بعد از connection تون به صورت زیر عمل کنید
<?php
$con = mysqli_connect("localhost","root","","teldb");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($con,"UTF8");
عبارت mysqli_set_charset داده های دیتابیس را به untf8 تبدیل میکند .
اگر خروجی شما به شکل unicode در آمد مشکلی وجود ندارد چرا که مفسر آن را به این شکل تبدیل کرده است و در اندروید خواهی دید . که داده ها به صورت درست ظاهر میشود .
سلام خسته نباشید ، این فن بروسلی تونو :لبخند: زدیم رو این وب سرویس سایت کمالان (http://www.kamalan.com/1391/11/15/%D9%81%DB%8C%D9%84%D9%85-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D9%81%D8%B5%D9%84-%DB%8C%D8%A7%D8%B2%D8%AF%D9%87%D9%85-%D8%B3%D8%A7%D8%AE%D8%AA-api/) ولی درست نشد ، راهنمایی میکنید چیکار کنم :لبخندساده:؟
ممنون
badname
پنج شنبه 06 آذر 1393, 21:05 عصر
دوستان کمک کنید لطفا ، خیلی وقته درگیره فارسی کردنشم ... کسی نیست مارو یاری کنه :ناراحت:
harani
پنج شنبه 06 آذر 1393, 21:34 عصر
اولاً مطمئن شوید که unicode محیط idea شما utf8 است یعنی مثلاً اگه از notepad++ است از قسمت encooding گزینه utf8 رو انتخاب کنید .
دوماً شما بایستی زمانی که دیتابیس را میسازید در قسمت callation مقدار utf خود را به utf8-general-ci تغییر دهید .
سوماً در قسمت php بایستی مقادیر زیر را درج کنید (پس از کانکشن)
ini_set('default_charset',"UTF-8");
mysqli_set_charset($con,'utf8');
header('Content-type: text/html; charset=UTF-8') ;
اگر این نکات را رعایت کنید نباید در خصوص فارسی نشان دادن مشکلی پیش اید .
از این پس سعی کنید از توابع mysqli استفاده کنید .
badname
پنج شنبه 06 آذر 1393, 21:55 عصر
اولاً مطمئن شوید که unicode محیط idea شما utf8 است یعنی مثلاً اگه از notepad++ است از قسمت encooding گزینه utf8 رو انتخاب کنید .
دوماً شما بایستی زمانی که دیتابیس را میسازید در قسمت callation مقدار utf خود را به utf8-general-ci تغییر دهید .
سوماً در قسمت php بایستی مقادیر زیر را درج کنید (پس از کانکشن)
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8') ;
اگر این نکات را رعایت کنید نباید در خصوص فارسی نشان دادن مشکلی پیش اید .
از این پس سعی کنید از توابع mysqli استفاده کنید .
تو notepad++ روی utf8-with BOM تنظیم کردم رو utf8 جواب نمیده .
دیتابیسم رو روی
utf8-general-ci تنظیم کردم
my sqli ام هستم بدین صورت :
public function __construct() {
// CONNECT TO THE DATABASE
$this->mysqli = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME,"3306");
if (mysqli_connect_errno()) {
throw new Exception("Unable to connect to the database. Error number: " . $this->mysqli->connect_errno);
}
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8');
}
ولی باز مشکلش حل نشد ، فارسی مشکل داره هنوز :((
harani
پنج شنبه 06 آذر 1393, 22:10 عصر
تو notepad++ روی utf8-with BOM تنظیم کردم رو utf8 جواب نمیده .
دیتابیسم رو روی
utf8-general-ci تنظیم کردم
my sqli ام هستم بدین صورت :
public function __construct() {
// CONNECT TO THE DATABASE
$this->mysqli = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME,"3306");
if (mysqli_connect_errno()) {
throw new Exception("Unable to connect to the database. Error number: " . $this->mysqli->connect_errno);
}
ini_set('default_charset',"UTF-8");
mysql_set_charset('utf8');
header('Content-type: text/html; charset=UTF-8');
}
ولی باز مشکلش حل نشد ، فارسی مشکل داره هنوز :((
utf8-with BOM نزارین رو utf8 بزارین . اگه درست نشد فایلها رو آپلود کنید لینکشو بزارین تو اینجا تا من بررسیش کنم .
badname
پنج شنبه 06 آذر 1393, 22:24 عصر
رو utf-8 که میزارم کلا سیستم از کار میوفته
بفرمایید فایل (http://www.kamalan.com/download/applications/PHPAndroidAPI.rar)
ممنون
harani
پنج شنبه 06 آذر 1393, 23:00 عصر
فارسی از سمت وب ساپروت نمیشه یا کلاینت ؟؟ آیا به سرور مقدار فارسی ارسال میکنید ؟؟
من تو فایل class dbhandler متدهای utf8 نمی بینم :
class DBHandler {
public function __construct() {
// CONNECT TO THE DATABASE
$this->mysqli = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME);
if (mysqli_connect_errno()) {
throw new Exception("Unable to connect to the database. Error number: " . $this->mysqli->connect_errno);
}
}
اگه واقعاً متدهای utf8 کارنمیکنن تو فورم php هم مطرح کنید .
من برای اطمینان و امنیت کار شما پروژه شما را پاک کردم خیالتان راحت .
badname
پنج شنبه 06 آذر 1393, 23:12 عصر
فارسی از سمت وب ساپروت نمیشه یا کلاینت ؟؟ آیا به سرور مقدار فارسی ارسال میکنید ؟؟
کلا ساپورت نمیکنه همه جوره تستش کردم همه ش ؟؟؟ ذخیره میشه تو دیتابیس:ناراحت:
فک کنم این گره به دست شما باز میشه رفتم کل فروم PHP رو به چالش کشیدم کسی نتونست حلش کنه
harani
پنج شنبه 06 آذر 1393, 23:18 عصر
باشه ولی من دغدغه ی کاری زیادی دارم . میتونم بپرسم وب سایتتون چیکار میکنه چی میدین و میفرستین ؟؟ بگید که من سر فرصت روش کار میکنم یه فایل php براتون درست میکنم مفرستم .
badname
پنج شنبه 06 آذر 1393, 23:26 عصر
بعضی جاهام گفتن این مطالب شاید کمک کنه ولی نکرد شمام یه نگاه بندازید بد نیست :
یک (http://stackoverflow.com/questions/6227747/android-default-charset-when-sending-http-post-put-problems-with-special-chara/6228377#6228377)
دو (http://stackoverflow.com/questions/13862930/sqlite-database-in-persian-language)
badname
پنج شنبه 06 آذر 1393, 23:30 عصر
باشه ولی من دغدغه ی کاری زیادی دارم . میتونم بپرسم وب سایتتون چیکار میکنه چی میدین و میفرستین ؟؟ بگید که من سر فرصت روش کار میکنم یه فایل php براتون درست میکنم مفرستم .
والا رو اندروید کار میکنم ، دارم device id و comment و زمان ارسال نظر و rate یا vote یا همون لایک رو میفرستم و همه اینارو نمایش میدم (دقیقا مثل نظرات و لایک و time زیر یه مطلب تو شبکه اجتماعی) ...، همین پروژه که دانلود کردین آماده ست همه اینکارارو انجام میده فقط مشکل فارسی داره ،،،،،
با اینکه سرتون حسابی شلوغه ولی اگه بتونین کمک کنید حل شه این مشکل کمک بزرگی کردیدن ....
با تشکر
harani
پنج شنبه 06 آذر 1393, 23:35 عصر
خب اولی برای ارسال ار اندروبد به سرور به کار میره و باید ست بشه دومی بکارت نمیاد
برخی اوقات کاراکترهای فارسی به صورت کاراکتر در وب دیده میشه که مشکل نیستند .
شما خودت کمی سعی کنی میتونیش حل کنی به شرط آنکه سریع ناامید نشی .
badname
پنج شنبه 06 آذر 1393, 23:43 عصر
خیلی وقته دنبالشم خودم که خیلی وقته پوستم در اومده نتونستم ، هر جا هم پرسیدیم همه اومدن پاسخ دادن ولی در نهایت اونام تسلیم شدن ،:ناراحت:
اولی کار نکردم باهاش چجوری باید ست کنم ، شمام نذاشته بودید فک کنم تو آموزشاتون :متفکر:
badname
جمعه 07 آذر 1393, 14:34 عصر
سلام بلاخره یه اتفاقی افتاد کدی که پایین میزارمو ست کردم و الان با browser دیتایی که میفرستم خیلی قشنگ بصورت فارسی در دیتابیس ذخیره میشه ، ولی هنوز یه مشکل بزرگ هست اندروید نمیتونه باهاش ارتباط برقرار کنه فک کنم بصورت byte باید دیتا بفرستم یا بگیرم با اندروید. یا اینکه charset uft-8 تنظیم کنم براش .... میتونید راهنمایی کنید چجوری انجامش بدم
ممنون
/* change character set to utf8 */
if (!$this->mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $this->mysqli->error);
} else {
printf("Current character set: %s\n", $this->mysqli->character_set_name());
}
harani
جمعه 22 اسفند 1393, 13:39 عصر
دوستان پروژه ی جامع تری که نوشتم رو براتون میزارم :
http://barnamenevis.org/showthread.php?481816-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DB%8C-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF&highlight=%D8%A2%D9%85%D9%88%D8%B2%D8%B4+%D8%B3%D8 %A7%D8%AE%D8%AA+%D9%88%D8%A8+%D8%B3%D8%B1%D9%88%DB %8C%D8%B3+%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9% 87+%D8%AF%D8%B1+%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB% 8C%D8%AF
mz6488
دوشنبه 31 فروردین 1394, 23:55 عصر
سلام.من از کدهای زیر استفاده کردم ولی هنوز مشکل نمایش فارسی رو دارم.تو دیتابیس درست ذحیره میشه.وقتی از اون دستور ست utf8 استفاده نکنم حروف فارسی به صورت علامت سوال دیده میشن.وقتی هم اون دستور رو میذارم حروف فارسی به صورت یه سری کاراکترهای انگلیسی نمایش داده میشن
<?php
$con = mysqli_connect("localhost","user","pass","dbName");if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error();}mysqli_set_charset($con,"UTF8");
$result = mysqli_query($con,"select * from daryaft_pardakht");
$output = array();$fetch_data = array(); while ($row = mysqli_fetch_array($result)){ $fetch_data['aid1'] = $row['aid1']; $fetch_data['aid2'] = $row['aid2']; $fetch_data['name1'] = $row['name1']; $fetch_data['name2'] = $row['name2']; $fetch_data['price'] = $row['price']; $output[] = $fetch_data;} echo json_encode($output); mysqli_close($con);
خروجی که با این کد میده
[{"aid1":"1103-3-3","aid2":"1101-1-1","name1":"\ufeb3\ufee0\ufef4\ufee2 \ufeaf\ufef3\ufeee\ufead\ufef1","name2":"\ufebb\ufee8\ufeaa\ufeed\ufed5 1","price":"2500000"}]
harani
سه شنبه 01 اردیبهشت 1394, 07:51 صبح
سلام.من از کدهای زیر استفاده کردم ولی هنوز مشکل نمایش فارسی رو دارم.تو دیتابیس درست ذحیره میشه.وقتی از اون دستور ست utf8 استفاده نکنم حروف فارسی به صورت علامت سوال دیده میشن.وقتی هم اون دستور رو میذارم حروف فارسی به صورت یه سری کاراکترهای انگلیسی نمایش داده میشن
<?php
$con = mysqli_connect("localhost","user","pass","dbName");if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error();}mysqli_set_charset($con,"UTF8");
$result = mysqli_query($con,"select * from daryaft_pardakht");
$output = array();$fetch_data = array(); while ($row = mysqli_fetch_array($result)){ $fetch_data['aid1'] = $row['aid1']; $fetch_data['aid2'] = $row['aid2']; $fetch_data['name1'] = $row['name1']; $fetch_data['name2'] = $row['name2']; $fetch_data['price'] = $row['price']; $output[] = $fetch_data;} echo json_encode($output); mysqli_close($con);
خروجی که با این کد میده
[{"aid1":"1103-3-3","aid2":"1101-1-1","name1":"\ufeb3\ufee0\ufef4\ufee2 \ufeaf\ufef3\ufeee\ufead\ufef1","name2":"\ufebb\ufee8\ufeaa\ufeed\ufed5 1","price":"2500000"}]
header('Content-type: text/html; charset=UTF-8') ;
اینم بنویسید تو کدتون درست میشه
mz6488
سه شنبه 01 اردیبهشت 1394, 09:22 صبح
باز هم درست نشد.همون نتیجه رو میده.این کدی که گفتید رو بعد از دستور mysqli_set_charset($con,"U TF8") گذاشتم
gilas1368
سه شنبه 01 اردیبهشت 1394, 09:29 صبح
نمیدونم بیان این سوال اینجا درسته یا خیر
من میخوام بدونم غیز از JSON و HTML آیا میشه از سرویس خروجی های دیگ ای گرفت یا ن؟
اگ واضحتر بخوام بگم اینطوری میتونم بیان کنم ک دنبال روشی هستم ک سرعتش ب مراتب از گرفتن JSON بالاتر باشه
harani
سه شنبه 01 اردیبهشت 1394, 21:59 عصر
باز هم درست نشد.همون نتیجه رو میده.این کدی که گفتید رو بعد از دستور mysqli_set_charset($con,"U TF8") گذاشتم
ببنید این حالت یونیکدی که است که برازر نشان میدهد در واقع داده های فارسی درست است و سمت کلاینت مشکلی در نمایش ندارد .
نمیدونم بیان این سوال اینجا درسته یا خیر
من میخوام بدونم غیز از JSON و HTML آیا میشه از سرویس خروجی های دیگ ای گرفت یا ن؟
اگر واضحتر بخوام بگم اینطوری میتونم بیان کنم ک دنبال روشی هستم ک سرعتش ب مراتب از گرفتن JSON بالاتر باشه
اگر منظورتون از سرعت بحث ارائه خدمات وب سرویس ربطی به جیسون یا soap بودن نداره با آنکه هر کدوم مزیت و معایب خودشون رو دارن . نحوه ی کدنویسی در وب نوع سرور خدمات دهنده سرعت اینترنت همگی اینها در سرعت ثاتیر دارن .
اگه ام دارین چتینگ راه میاندازین اونم سرور چت میخواد و ارتباط از طریق سوکت و ای پی .
gilas1368
سه شنبه 01 اردیبهشت 1394, 22:38 عصر
اگر منظورتون از سرعت بحث ارائه خدمات وب سرویس ربطی به جیسون یا soap بودن نداره با آنکه هر کدوم مزیت و معایب خودشون رو دارن . نحوه ی کدنویسی در وب نوع سرور خدمات دهنده سرعت اینترنت همگی اینها در سرعت ثاتیر دارن .
اگه ام دارین چتینگ راه میاندازین اونم سرور چت میخواد و ارتباط از طریق سوکت و ای پی .
من دارم ی دیتای وحشتناک زیاد رو در قالب json میگیرم و میخوام ایناها رو توی دیتابیس ذخیره کنم
منظورم از زیاد ی چیزی نزدیک ب 5000 و بیشتر هستش
حالا من دوتا سوال دارم
یکی اینک سریعترین روش برای دخیره سازی این حجم دیتا در یتابیس SQLite چیه؟
و دوم اینک آیا امکان داره ب علت تراکنش های بالا روی دیتابیس Sqlite این دیتابیس Lock بشه یا پاسخ نده یا کرش بکنه؟
harani
چهارشنبه 02 اردیبهشت 1394, 08:09 صبح
5000 داده خیلی نیست اکثر برنامه های دیکشنری چیزی بیشتر از این عدد دارن و هیچی کرشی انجام نمیشه.
ببنید این بحث کد نویسی شماس . شما نبایستی همه ی 5000 داده رو یه جا نشون بدید حتما بایستی limit کنین یعنی داده ها رو 5 تا 5 تا یا 10 تا 10 تا و غیره نشون بدید .
gilas1368
چهارشنبه 02 اردیبهشت 1394, 09:00 صبح
5000 داده خیلی نیست اکثر برنامه های دیکشنری چیزی بیشتر از این عدد دارن و هیچی کرشی انجام نمیشه.
ببنید این بحث کد نویسی شماس . شما نبایستی همه ی 5000 داده رو یه جا نشون بدید حتما بایستی limit کنین یعنی داده ها رو 5 تا 5 تا یا 10 تا 10 تا و غیره نشون بدید .
آره حرفتون دسته، میدونم ک دیتا رو باید تکه تکه نمایش بدم
بحث نمایش دیتا نیست
من دیتا رو در قالب ی فایل JSON میگیرم و مشکلی هم ندارم اما گاها در زمانی ک میخوام این دیتا رو توی بانک ذخیره کنم با دو تا خطا مواجه میشم:
یا ای خطا رو میده
SQLiteDatabseLockedException: database is locked: , while compiling: PRAGMA journal_mode=TRUNCATE
و یا این خطا رو میده:
android.database.sqlite.SQLiteCantOpenDatabaseExce ption: unable to open database file (code 14): , while compiling: PRAGMA journal_mode
و من دقیقا نمیدونم علت این خطاها چیه و چرا اتفاق میوفته
harani
پنج شنبه 03 اردیبهشت 1394, 08:46 صبح
من تا حالا چنین مشکلی پیدا نکرده بودم شما بایستی درستی کانکشن خود را بررسی کنید . یه نکته هم برای شما هم برای سایر دوستان برای داده ها با حجم بالا بهتر است از ormlite استفاده شود ن sqllite هم سرعت بالاتری داره حتی از خود sqlite حجم کمتری داره .
c0mmander
پنج شنبه 03 اردیبهشت 1394, 10:08 صبح
آره حرفتون دسته، میدونم ک دیتا رو باید تکه تکه نمایش بدم
بحث نمایش دیتا نیست
من دیتا رو در قالب ی فایل JSON میگیرم و مشکلی هم ندارم اما گاها در زمانی ک میخوام این دیتا رو توی بانک ذخیره کنم با دو تا خطا مواجه میشم:
یا ای خطا رو میده
SQLiteDatabseLockedException: database is locked: , while compiling: PRAGMA journal_mode=TRUNCATE
و یا این خطا رو میده:
android.database.sqlite.SQLiteCantOpenDatabaseExce ption: unable to open database file (code 14): , while compiling: PRAGMA journal_mode
و من دقیقا نمیدونم علت این خطاها چیه و چرا اتفاق میوفته
این مشکل از اینکه در سری قبلی که دیتا بیس رو باز کردید (چه برای خوندن و چه برای نوشتن) دیتا بیس به درستی بسته نشده ولی شما دارید یک کانکشن جدید باز میکنید.
mz6488
پنج شنبه 03 اردیبهشت 1394, 20:00 عصر
سلام.من خروجی رو از سایت گرفتم .ولی اجازه ایجاد jasonArray رو نمیده.میگه خروجی که داری فرمتش json نیست.
این هم خروجی
[{"aid1":"1101-1-1","aid2":"1102-1-1"}]
mz6488
پنج شنبه 03 اردیبهشت 1394, 20:12 عصر
برنامه رو تریس کردم متوجه شدم که به اول رشته ] رو اضافه نمیکنه.ولی از طریق سایت خروجیش کاملا درسته.فعلا به اولش خودم یه ] اضافه کردم.این مشکل رو چجوری حلش کنم؟
harani
جمعه 04 اردیبهشت 1394, 10:34 صبح
من خودم بارها با این مشکل برخورد داشتم برای اینکه برنامه هنگام پارس کردن به مشکل میخوره شما مجبورین دستی خودتون چک کنین :
راههای زیادی ممکن است باشه یه راهش استفاده از کد زیر :
if (!jsonArrayResponse.startWith("[")){
jsonArrayResponse="["+jsonArrayResponse;
}
if (!jsonArrayResponse.endWith("]")){
jsonArrayResponse=jsonArrayResponse+"]";
}
mz6488
جمعه 04 اردیبهشت 1394, 12:37 عصر
با اجازه من کد زیر رو میذارم.از این کد استفاده کردم مشکلی نداشت
String StreamToString(InputStream in)
{
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder total = new StringBuilder();
String line;
try
{
while ((line = r.readLine()) != null) {
total.append(line);
}
return total.toString();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
pbm_soy
جمعه 11 اردیبهشت 1394, 02:50 صبح
سلام
کسی ميتون. درمورد ارسال فایل به همراه چند فیلد متنی و عددی راهنمایی کنه
یعنی یک پست که انواع دادها را داشته باشد
اغلب سرچ کردم اینا را جدا جدا پست کردن یا حداقل فایل را به تنهایی پست کرده
چیزی که هست تو مثالها پارامترهای پست برای فایل و غیر فایل باهم در یک پست ست نکردن و باهم execut نکردن
ممنون میشم اگه دوستان نظرشون را بگن
program2vb
شنبه 20 تیر 1394, 11:20 صبح
با عرض سلام خدمت دوستان عزیز
اینم فایل php برای آپلود کردن فایلهاتون .
<?php
$target_path1 = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path1 = $target_path1 . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target_path1)) {
echo "The first file ". basename( $_FILES['uploaded_file']['name']).
" has been uploaded.";
} else{
echo "There was an error uploading the file, please try again!";
echo "filename: " . basename( $_FILES['uploaded_file']['name']);
echo "target_path: " .$target_path1;
}
?>
موفق و پیروز باشید در پناه حق . یاعلی
tara1367
سه شنبه 27 مرداد 1394, 11:39 صبح
سلام
ضمن تشکر فراوان از آموزش دقیق و خوب و آرزوی موفقیت.
من تمام آموزش رو دقیق دنبال کردم و متوجه شدم. اما مساله اینجاست که من قرار است برای یک شرکت که خودش وب سایت داره یک اپلیکیشن بنویسم. و وب رو با asp.net طراحی کردند. حالا من باید چه اطلاعاتی از اون ها بگیرم؟؟ ip سایتشون ، یوزر و پسوردشون؟؟
و با توجه به اینکه کل آموزشات شما بر مبنای php بوده من چگونه باید با سایت اون ها که با زبان asp.net نوشته شده، ارتباط برقرار کنم؟؟
با درود و سپاس فراوان
so2011
سه شنبه 27 مرداد 1394, 19:12 عصر
باسلام,من میخواهم از تعداد عکس های مختلف در پست هام استفاده کنم و در هرجایی در بین متن هام که می خوام نه به صورت پیش فرض در قسمتی که imageview قرار دادم.لطفا کمک کنیـد
singel
چهارشنبه 28 مرداد 1394, 12:59 عصر
باسلام,من میخواهم از تعداد عکس های مختلف در پست هام استفاده کنم و در هرجایی در بین متن هام که می خوام نه به صورت پیش فرض در قسمتی که imageview قرار دادم.لطفا کمک کنیـد
سلام من هم این مشکل را دارم و این سوال من هم هست ، لطفا راهنمایی کنید
so2011
سه شنبه 03 شهریور 1394, 14:54 عصر
سلام من هم این مشکل را دارم و این سوال من هم هست ، لطفا راهنمایی کنید
درخواست کمک!!!
لطفا
tara1367
سه شنبه 10 شهریور 1394, 09:04 صبح
سلام
ضمن تشکر فراوان از آموزش دقیق و خوب و آرزوی موفقیت.
من تمام آموزش رو دقیق دنبال کردم و متوجه شدم. اما مساله اینجاست که من قرار است برای یک شرکت که خودش وب سایت داره یک اپلیکیشن بنویسم. و وب رو با asp.net طراحی کردند. حالا من باید چه اطلاعاتی از اون ها بگیرم؟؟ ip سایتشون ، یوزر و پسوردشون؟؟
و با توجه به اینکه کل آموزشات شما بر مبنای php بوده من چگونه باید با سایت اون ها که با زبان asp.net نوشته شده، ارتباط برقرار کنم؟؟
با درود و سپاس فراوان
هیچ کس نمی تونه راهنمایی کنه؟؟
mohammada12
جمعه 03 مهر 1394, 21:50 عصر
درود بر دوستان
من کد دریافت و ارسال اطلاعاتو از اندروید به وب دارم و روی جنی موشن کار می کنه ولی وقتی خروجی کار و روی گوشی خودم نصب می کنم نمی تونه سایت و بشناسه و اطلاعات رد و بدل نمی شه
همچین مشکلی رو موقعی داشتم که برنامه نمی تونست آدرس صحیح و پیدا کنه
به عنوان مثال آدرس
taskRead.execute(new String[]{"http://app.xzn.ir/show.php"});
webView1.loadUrl("http://app.xzn.ir");
به نظر شما مشکل از کجاست ، اگه از آدرس هست باید چه تغییری بکنه
دوستان کسی به این مشکل بر نخورده - مرسی
yasinpuladi
یک شنبه 17 آبان 1394, 10:11 صبح
واقعا ممنون بابت این پکیج عالی
Amin-rz
پنج شنبه 06 اسفند 1394, 00:58 صبح
من یه دیتابیس تو سی پنل سایتم ساختم.با یوزر و پسورد جهت دسترسی.
ولی از کجا باید آدرس (url)دیتابیسو بدست بیارم تا تو برنامم بذارم؟
hassanmosavi
جمعه 24 اردیبهشت 1395, 20:07 عصر
با سلام و خسته نباشید
برنامه من HttpClient client = new DefaultHttpClient();
رو نمیشناسه و خطا میده با اینپور و... راه نیوفتاد
کتاب خونه ش رو از کجا باید بگیرم و چطور اضافه کنم
من از اندروید استدیو استفاده میکنم.
با تشکر
loo30fer
جمعه 24 اردیبهشت 1395, 22:21 عصر
بیاین روی HttpClient و دکمه ترکیبی ALT + Enter فشار بدین خودش کتابخانش رو اضافه میکنه
hassanmosavi
یک شنبه 26 اردیبهشت 1395, 13:26 عصر
بیاین روی HttpClient و دکمه ترکیبی ALT + Enter فشار بدین خودش کتابخانش رو اضافه میکنه
نمیشه مهندس
از اون کارا گذشته
اصلا نمیشناسه
Nevercom
یک شنبه 26 اردیبهشت 1395, 17:28 عصر
کلاس HttpClient در API 23 به کلی حذف شده
http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
همونطور که در لینک بالا توضیح داده شده، بجای اون از HttpUrlConnection استفاده استفاده کنید.
اگر هنوز می خواید از HttpClient استفاده کنید، دو راه دارید
پروژه تون رو با API 22 کامپایل کنید
این عبارت رو به build.gradle اضافه کنید:
android {
useLibrary 'org.apache.http.legacy'
}
harani
یک شنبه 26 اردیبهشت 1395, 18:17 عصر
کلاس HttpClient در API 23 به کلی حذف شده
http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
همونطور که در لینک بالا توضیح داده شده، بجای اون از HttpUrlConnection استفاده استفاده کنید.
اگر هنوز می خواید از HttpClient استفاده کنید، دو راه دارید
پروژه تون رو با API 22 کامپایل کنید
این عبارت رو به build.gradle اضافه کنید:
android {
useLibrary 'org.apache.http.legacy'
}
:تشویق::تشویق::تشویق::تشویق:: شویق:
hassanmosavi
دوشنبه 27 اردیبهشت 1395, 11:36 صبح
ممنون مهندس
چک میکنم
siamak_derakhshany
چهارشنبه 29 اردیبهشت 1395, 14:08 عصر
سلام. با تشکر از مطالب خوبتون. من تاره با این سایت اشنا شدم. مطالب این تاپیک رو خوندم و مرحله به مرحله می خوام پیش برم.
ایکن wamp server سبز رنگه و صفحه مدیریتش با تایپ localhost بالا میاد .در همون ابتدای کار متاسفانه بعد از کلیک روی نام وبسایتم در wamp server با پیام Server not found مواجه میشم. ایراد کار کجاست؟ پیشاپیش از راهنماییتون سپاسگزارم.
hassanmosavi
سه شنبه 04 خرداد 1395, 12:55 عصر
از تنظیمات ومپ هست
یک راهش اینه ومپ رو دوباره نصب کنی
یه راهش اینه
ادرس رو دستی بنویسی
localhost/test
test اسم وب سایت هست
harani
شنبه 07 اسفند 1395, 19:14 عصر
دوستان من سلام .
خیلی از کدهای گفته شده در اندروید و هم php جدید تقریبا منسوخ شده اند شما میتوانید برای موارد جدیدتر از مفاهیم زیر استفاده کنید .
۱- استفاده از HttpUrlConnection / HttpsUrlConnection
2- استفاده از کتابخانه volley
3- استفاده از کتابخانه retrofit
۴- استفاده از کتابخانه ساده و سربع Fast-Android-Networking
هر کدوم معایب و مزایای خاص خودشونو دارند که بر حسب علاقه میتوانید آنها را دنبال کنید با تشکر.
harani
یک شنبه 08 اسفند 1395, 11:21 صبح
ضمن تشکر از harani عزیز بابت آموزش بسیار خوبش من هنوز موفق به دریافت اطلاعات از سرور نشدم و ارور میده(جلسه ششم قسمت اول)
میشه راجع به thread هم توضیح بدهید من نمی دونم مشکل از کجاست؟؟
[2014-08-31 10:34:06 - telbook] ActivityManager: Warning: Activity not started, its current task has been brought to the front
سلام این لینک ها را مشاهده فرمایید با تشکر
http://www.aparat.com/v/EtuLm
www.servicerayaneh.ir/joomla-pages/آموزش-برنامه-نویسی-اندروید/229-استفاده-مطمئن-از-کلاس-asynctask.html (http://www.servicerayaneh.ir/joomla-pages/آموزش-برنامه-نویسی-اندروید/229-استفاده-مطمئن-از-کلاس-asynctask.html)
http://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D9%BE%D8%B3-%D8%B2%D9%85%DB%8C%D9%86%D9%87-%D8%A7%DB%8C-%D8%A8%D8%A7%20Handler-AsynchTask-Loader
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.