انجمن سایت کلیدستان



دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۹، ۰۴:۰۵ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mcn.nice
آخرین ارسال: mcn.nice
پاسخ 9
بازدید 1432

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#1
سلام خسته نباشید ، ابتدا باید از مدیر سایت برای قرار دادن مطالب بسیار مفید تشکر کنم . و از شما تقاضا دارم در رفع این مشکل کمکم کنید .

بنده یک برنامه ایجاد کردم که داده هاشو از اینترنت باید دریافت کنه (برنامه برای نمایش اطلاعات سایت) برنامه زمانیکه یک رشته ساده را از اینترنت می فرستم درست عمل میکنه و نمایش میده ولی نمیدونم چرا زمانیکه آرایه ای حاوی رشته ها را می خواهد بفرستد مقدار خالی و یا array  را نمایش می دهد !!

اینم کد دریافت اطلاعات از سرور :

کد پی‌اچ‌پی:
try {
 
              
   
                      
// Building Parameters
 
             List<NameValuePairparams = new ArrayList<NameValuePair>();
 
             
              params
.add(new BasicNameValuePair("action""نرم افزار"));
 
             // defaultHttpClient
 
             DefaultHttpClient httpClient = new DefaultHttpClient();
 
             HttpPost httpPost = new HttpPost(url);
 
             UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
 
             entity.setContentEncoding(HTTP.UTF_8);
 
             entity.setContentType("application/json");
 
             httpPost.setEntity(entity);
 
              
 
              HttpResponse httpResponse 
httpClient.execute(httpPost);
 
             HttpEntity httpEntity httpResponse.getEntity();
 
             is httpEntity.getContent();
 
         } catch (UnsupportedEncodingException e) {
 
             e.printStackTrace();
 
         } catch (ClientProtocolException e) {
 
             e.printStackTrace();
 
         } catch (IOException e) {
 
             e.printStackTrace();
 
         }
 
         try {
 
             BufferedReader reader = new BufferedReader(new InputStreamReader(
 
                     is"iso-8859-1"), 8);
 
             final StringBuilder sb = new StringBuilder();
 
             String line null;
 
             int i=0;
 
             while ((line reader.readLine()) != null) {
 
                 sb.append(line);
 
              
                  items
.add(new listviewitem()
 
                 {{
 
                      
                      imgview
=R.drawable.ic_launcher;
 
                     String my_string_1 = new String(sb.toString().getBytes("ISO-8859-1"),"UTF-8");
 
                      
                      txttitel
=my_string_1;
 
 
 
                 }});
 
             }
 
             is.close(); 

اینم کد php

کد پی‌اچ‌پی:
    $al=mysqli_query($con,"SELECT post_title FROM wp_cityposts where post_type='post'");
 
           $response = array();
 
            
            while
($r mysql_fetch_assoc($al))
 
       {
 
           $response[]=$r;
 
            
        
}
 
 
    //  }
 
  
//echo json_encode($response[]);    
print($response); 

پیشاپیش از کمک شما سپاسگذارم .
پاسخ
 سپاس شده توسط admin

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#2
سلام.
بنده خودم هر زمان که قرار است یک فایل php جدید را کدنویسی کنم، بذون درگیر شدن با کدنویسی برنامه اندروید، ابتدا صحت کدنویسی فایل php را تست می کنم (با اجرای صفحه در مرورگر اینترنت). تست صفحه یا می تواند در خود سرور اینترنتی صورت گیرد یا در کامپیوتر موجود در خانه (با نرم افزارهای شبیه ساز سرور مثل Wamp Server).
همچنین در کدنویسی PHP ، توصیه می کنم مقدار متغیرها را با تابع var_dump در خروجی مشاهده کنید (منظورم در مرحله تست صفحه است).
اکنون به سراغ کدهای صفحه شما می رویم. من یک کد نمونه و مشابه کدهای شما نوشتم و آن را تست کردم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
print(
$response); 
?>

خروجی، شامل یک متن خطا می باشد (خروجی در مرورگر اینترنت) :

   

پس مشکل از نمایش اطلاعات در خروجی است (با var_dump متوجه شدیم که آرایه به درستی تعریف شده). کدها را به صورت زیر می نویسیم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
echo 
json_encode($response); 
?>

نتیجه اجرای کدها (این بار بدون خطا) :

کد پی‌اچ‌پی:
array (size=5)
 
 0 => int 1
  1 
=> int 2
  2 
=> int 3
  3 
=> int 4
  4 
=> int 5
[1,2,3,4,5

بنابراین اکنون دیگر باید دستور var_dump را حذف کنیم تا خروجی صفحه، همان خروجی مورد نظرتان باشد (همیشه به همین شکل، صفحه php را تست کرده و در مرحله آخر نیز بخش های مربوط به تست، مثل همین دستور var_dump را حذف کنید).

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط mcn.nice ، sohrabjam

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#3
(۱۳۹۴/۰۹/۱۸, ۰۳:۴۶ ب.ظ)admin نوشته: سلام.
بنده خودم هر زمان که قرار است یک فایل php جدید را کدنویسی کنم، بذون درگیر شدن با کدنویسی برنامه اندروید، ابتدا صحت کدنویسی فایل php را تست می کنم (با اجرای صفحه در مرورگر اینترنت). تست صفحه یا می تواند در خود سرور اینترنتی صورت گیرد یا در کامپیوتر موجود در خانه (با نرم افزارهای شبیه ساز سرور مثل Wamp Server).
همچنین در کدنویسی PHP ، توصیه می کنم مقدار متغیرها را با تابع var_dump در خروجی مشاهده کنید (منظورم در مرحله تست صفحه است).
اکنون به سراغ کدهای صفحه شما می رویم. من یک کد نمونه و مشابه کدهای شما نوشتم و آن را تست کردم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
print(
$response); 
?>

خروجی، شامل یک متن خطا می باشد (خروجی در مرورگر اینترنت) :



پس مشکل از نمایش اطلاعات در خروجی است (با var_dump متوجه شدیم که آرایه به درستی تعریف شده). کدها را به صورت زیر می نویسیم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
echo 
json_encode($response); 
?>

نتیجه اجرای کدها (این بار بدون خطا) :

کد پی‌اچ‌پی:
array (size=5)
 
 0 => int 1
  1 
=> int 2
  2 
=> int 3
  3 
=> int 4
  4 
=> int 5
[1,2,3,4,5

بنابراین اکنون دیگر باید دستور var_dump را حذف کنیم تا خروجی صفحه، همان خروجی مورد نظرتان باشد (همیشه به همین شکل، صفحه php را تست کرده و در مرحله آخر نیز بخش های مربوط به تست، مثل همین دستور var_dump را حذف کنید).

Flower


خیلی ممنون از وقتی که در اختیار کاربران قرار می دهید .

نتیجه من به صورت نامفهومه !

فکر می کنم با json_encode درست بشه و نتیجه select درست است ، ولی بازم چیزی در لیست نمایش داده نمی شود برنامه اندروید تغییرات دیگری نیاز ندارد؟
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#4
(۱۳۹۴/۰۹/۱۸, ۰۳:۴۶ ب.ظ)admin نوشته: سلام.
بنده خودم هر زمان که قرار است یک فایل php جدید را کدنویسی کنم، بذون درگیر شدن با کدنویسی برنامه اندروید، ابتدا صحت کدنویسی فایل php را تست می کنم (با اجرای صفحه در مرورگر اینترنت). تست صفحه یا می تواند در خود سرور اینترنتی صورت گیرد یا در کامپیوتر موجود در خانه (با نرم افزارهای شبیه ساز سرور مثل Wamp Server).
همچنین در کدنویسی PHP ، توصیه می کنم مقدار متغیرها را با تابع var_dump در خروجی مشاهده کنید (منظورم در مرحله تست صفحه است).
اکنون به سراغ کدهای صفحه شما می رویم. من یک کد نمونه و مشابه کدهای شما نوشتم و آن را تست کردم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
print(
$response); 
?>

خروجی، شامل یک متن خطا می باشد (خروجی در مرورگر اینترنت) :



پس مشکل از نمایش اطلاعات در خروجی است (با var_dump متوجه شدیم که آرایه به درستی تعریف شده). کدها را به صورت زیر می نویسیم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
echo 
json_encode($response); 
?>

نتیجه اجرای کدها (این بار بدون خطا) :

کد پی‌اچ‌پی:
array (size=5)
 
 0 => int 1
  1 
=> int 2
  2 
=> int 3
  3 
=> int 4
  4 
=> int 5
[1,2,3,4,5

بنابراین اکنون دیگر باید دستور var_dump را حذف کنیم تا خروجی صفحه، همان خروجی مورد نظرتان باشد (همیشه به همین شکل، صفحه php را تست کرده و در مرحله آخر نیز بخش های مربوط به تست، مثل همین دستور var_dump را حذف کنید).

Flower

ببخشید من می خواهم آموزش کلید شماره 2651 را استفاده کنم اما در این قسمت کد خطا می دهد !

کد پی‌اچ‌پی:
                 setListAdapter(new MyAdapter(MainActivity.this,
 
                                      R.layout.list_item,
 
                                      R.id.txttitel,
 
                                      json_string_1_all));    
                   lv 
getListView();     

و خطای آن  نبودن setListAdapter می باشد و پیشنهاد می دهد که در کلاس myadapter آن را ایجاد کنم .
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#5
(۱۳۹۴/۰۹/۱۸, ۰۵:۲۱ ب.ظ)mcn.nice نوشته:
(۱۳۹۴/۰۹/۱۸, ۰۳:۴۶ ب.ظ)admin نوشته: سلام.
بنده خودم هر زمان که قرار است یک فایل php جدید را کدنویسی کنم، بذون درگیر شدن با کدنویسی برنامه اندروید، ابتدا صحت کدنویسی فایل php را تست می کنم (با اجرای صفحه در مرورگر اینترنت). تست صفحه یا می تواند در خود سرور اینترنتی صورت گیرد یا در کامپیوتر موجود در خانه (با نرم افزارهای شبیه ساز سرور مثل Wamp Server).
همچنین در کدنویسی PHP ، توصیه می کنم مقدار متغیرها را با تابع var_dump در خروجی مشاهده کنید (منظورم در مرحله تست صفحه است).
اکنون به سراغ کدهای صفحه شما می رویم. من یک کد نمونه و مشابه کدهای شما نوشتم و آن را تست کردم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
print(
$response); 
?>

خروجی، شامل یک متن خطا می باشد (خروجی در مرورگر اینترنت) :



پس مشکل از نمایش اطلاعات در خروجی است (با var_dump متوجه شدیم که آرایه به درستی تعریف شده). کدها را به صورت زیر می نویسیم :

کد پی‌اچ‌پی:
<?php
$i
=1;
$response = array();
while (
$i<6){
 
   $response[] = $i;
 
   $i $i+1;
}
var_dump($response);
echo 
json_encode($response); 
?>

نتیجه اجرای کدها (این بار بدون خطا) :

کد پی‌اچ‌پی:
array (size=5)
 
 0 => int 1
  1 
=> int 2
  2 
=> int 3
  3 
=> int 4
  4 
=> int 5
[1,2,3,4,5

بنابراین اکنون دیگر باید دستور var_dump را حذف کنیم تا خروجی صفحه، همان خروجی مورد نظرتان باشد (همیشه به همین شکل، صفحه php را تست کرده و در مرحله آخر نیز بخش های مربوط به تست، مثل همین دستور var_dump را حذف کنید).

Flower

ببخشید من می خواهم آموزش کلید شماره 2651 را استفاده کنم اما در این قسمت کد خطا می دهد !

کد پی‌اچ‌پی:
                 setListAdapter(new MyAdapter(MainActivity.this,
 
                                      R.layout.list_item,
 
                                      R.id.txttitel,
 
                                      json_string_1_all));    
                   lv 
getListView();     

و خطای آن  نبودن setListAdapter می باشد و پیشنهاد می دهد که در کلاس myadapter آن را ایجاد کنم .

مدیر گرامی من دیگه مخم یاری نمیکنه کل سایت های لاتین و ایرانی را زیر و رو کردم همش خطا میده!!

الان که باز از این برنامه خط زیر را خطا می دهد !

کد پی‌اچ‌پی:
public class JSONParse extends AsyncTask<StringStringJSONObject> {
 
               public ProgressDialog pDialog;
 
               String my_string_1="";
 
      @Override
       
public void onPreExecute() {
 
          super.onPreExecute();
 
          pDialog = new ProgressDialog(MainActivity.this);
 
          pDialog.setMessage("Getting Data ...");
 
          pDialog.setIndeterminate(false);
 
          pDialog.setCancelable(true);
 
          pDialog.show();
 
      }
 
      @Override
       
public JSONObject doInBackground(String... args) {
 
          JSONParser jParser = new JSONParser();
 
          // Getting JSON from URL
 
          JSONObject json jParser.getJSONFromUrl(url);
 
          return json;
 
      }
 
       @Override
        public void onPostExecute
(JSONObject json) {
 
            ListView lv=(ListView)findViewById(R.id.listView2);    
     
           CustomListViewAdapter adapter=new CustomListViewAdapter(MainActivity.this,items);
 
           pDialog.dismiss();
 
           try {
 
                 
                   cityroid 
json.getJSONArray(json_titel);
 
                  // build String
 
                  json_length cityroid.length();
 
                  json_string_1_all = new String [cityroid.length()];
 
                  json_string_2_all = new String [cityroid.length()];
 
                  json_string_3_all = new String [cityroid.length()];
 
                  for(int i 0cityroid.length(); i++){
 
                      JSONObject c cityroid.getJSONObject(i);
 
                      // Storing JSON item in a Variable --> with UTF-8 for persian words
 
                      json_string_1_all[i] = new String(c.getString(json_pic).getBytes("ISO-8859-1"), "UTF-8");
 
                      json_string_2_all[i] = new String(c.getString(json_command).getBytes("ISO-8859-1"), "UTF-8");
 
                      json_string_3_all[i] = new String(c.getString(json_apkdl).getBytes("ISO-8859-1"), "UTF-8");
 
                  }
 
                  
                   
// show data in ListView
 
                  for(int i 0cityroid.length(); i++){
 
                     
                       my_string_1
json_string_1_all[i];
 
                      
                               items
.add(new listviewitem()
 
                              {{
 
                               
                                   imgview
=R.drawable.ic_launcher;
 
                                  txttitel=my_string_1;


 
                              }});
 
                              lv.setAdapter(adapter);
 
                  }
 
          } catch (JSONException e) {
 
              e.printStackTrace();
 
          } catch (UnsupportedEncodingException e1) {
 
                  e1.printStackTrace();
 
                  }
 
       }

 
  


اینم خطی که خطا می گیرد !
کد پی‌اچ‌پی:
cityroid json.getJSONArray(json_titel); 
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#6
(۱۳۹۴/۰۹/۱۸, ۰۵:۱۴ ب.ظ)mcn.nice نوشته: نتیجه من به صورت نامفهومه !

فکر می کنم با json_encode درست بشه و نتیجه select درست است ، ولی بازم چیزی در لیست نمایش داده نمی شود برنامه اندروید تغییرات دیگری نیاز ندارد؟

منظورتان را از ((نامفهوم)) متوجه نشدم، ولی اگر کاراکترهای متن، فارسی باشند، هنگام تست صفحه (در مرورگر اینترنت)، کاراکترها را به شکل دیگری می بینیم (پس از این بابت، جای نگرانی نیست). دلیلش این است که ما چارچوب HTML را در خروجی ذکر نمی کنم (اگر چک کردن متن فارسی مهم بود، یک صفحه تست دیگر ایجاد کنید و متن را در چارچوب HTML قرار بدهید تا متن فارسی را به شکل صحیح ببینید، اما این مورد، تنها برای تست است و آن را برای صفحه اصلی به کار نبرید).
من بخش پردازش متن دریافتی با روش های مرتبط با json را در کدی که در ارسال اول قرار داده بودید، ندیدم. فکر می کنم همین کلید 2651 که ذکر کردید را اگز کامل بخوانید و تست کنید، تمامی این موارد روشن خواهد شد. 

برای گیج نشدن، به صورت مرحله بندی پیش بروید (منظورم در پروژه خودتان است) :

گام اول : خروجی صفحه PHP را در مرورگر اینترنت به دست بیاورید (آنچه قصد دارید برنامه دریافت کند) (می توانید ابتدا آن را با یک متن انگلیسی تست کنید و بعد به سراغ متن فارسی بروید)
گام دوم : همین متن را توسط برنامه اندروید دریافت کرده و در یک TextView نمایش بدهید (تا حداقل از دریافت صحیح متن، اطمینان پیدا کنید)
گام سوم : از متن دریافتی، مقادیری که در آن ذکر شده اند (با ساختار json) را با روش های مرتبط با json ، استخراج کرده و در یک آرایه (Array یا ArrayList) ذخیره کنید و بعد با روشی دلخواه، صحت مقادیر را چک کنید (مثلا با Log نویسی یا با نمایش توسط روش Toast به صورت یک پیام کوتاه چند ثانیه ای)
گام چهارم : از آرایه ساخت شده، برای ساخت و نمایش ListView استفاده کنید.


در مورد کلید شماره 2651 ، کلید مورد نظر دارای پروژه اندروید است. آن را دریافت کنید و بررسی های لازم را بر روی آن پروژه انجام دهید.

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#7
(۱۳۹۴/۰۹/۱۸, ۰۷:۲۳ ب.ظ)admin نوشته:
(۱۳۹۴/۰۹/۱۸, ۰۵:۱۴ ب.ظ)mcn.nice نوشته: نتیجه من به صورت نامفهومه !

فکر می کنم با json_encode درست بشه و نتیجه select درست است ، ولی بازم چیزی در لیست نمایش داده نمی شود برنامه اندروید تغییرات دیگری نیاز ندارد؟

منظورتان را از ((نامفهوم)) متوجه نشدم، ولی اگر کاراکترهای متن، فارسی باشند، هنگام تست صفحه (در مرورگر اینترنت)، کاراکترها را به شکل دیگری می بینیم (پس از این بابت، جای نگرانی نیست). دلیلش این است که ما چارچوب HTML را در خروجی ذکر نمی کنم (اگر چک کردن متن فارسی مهم بود، یک صفحه تست دیگر ایجاد کنید و متن را در چارچوب HTML قرار بدهید تا متن فارسی را به شکل صحیح ببینید، اما این مورد، تنها برای تست است و آن را برای صفحه اصلی به کار نبرید).
من بخش پردازش متن دریافتی با روش های مرتبط با json را در کدی که در ارسال اول قرار داده بودید، ندیدم. فکر می کنم همین کلید 2651 که ذکر کردید را اگز کامل بخوانید و تست کنید، تمامی این موارد روشن خواهد شد. 

برای گیج نشدن، به صورت مرحله بندی پیش بروید (منظورم در پروژه خودتان است) :

گام اول : خروجی صفحه PHP را در مرورگر اینترنت به دست بیاورید (آنچه قصد دارید برنامه دریافت کند) (می توانید ابتدا آن را با یک متن انگلیسی تست کنید و بعد به سراغ متن فارسی بروید)
گام دوم : همین متن را توسط برنامه اندروید دریافت کرده و در یک TextView نمایش بدهید (تا حداقل از دریافت صحیح متن، اطمینان پیدا کنید)
گام سوم : از متن دریافتی، مقادیری که در آن ذکر شده اند (با ساختار json) را با روش های مرتبط با json ، استخراج کرده و در یک آرایه (Array یا ArrayList) ذخیره کنید و بعد با روشی دلخواه، صحت مقادیر را چک کنید (مثلا با Log نویسی یا با نمایش توسط روش Toast به صورت یک پیام کوتاه چند ثانیه ای)
گام چهارم : از آرایه ساخت شده، برای ساخت و نمایش ListView استفاده کنید.


در مورد کلید شماره 2651 ، کلید مورد نظر دارای پروژه اندروید است. آن را دریافت کنید و بررسی های لازم را بر روی آن پروژه انجام دهید.

Flower

باز هم از پاسختان ممنونم ولی من باز هم با وجود استفاده از آموزش شما در آن کلید 2651 به مشکل خوردم یعنی در کد زیر خطا می دهد .
کد پی‌اچ‌پی:
cityroid json.getJSONArray(json_titel); 

من به طولانی بودن کاراکتر ها شک کردم و به همین خاطر برای select محدودیت قرار دادم اما با وجود آن باز هم خطا می دهد!

کد محدودیت :
کد پی‌اچ‌پی:
$q=mysqli_query($con,"SELECT post_title FROM wp_cityposts where post_type='post' and post_status='publish' LIMIT 1,1"); 

نتیجه آن را که در php مشاهده کردم یک رشته بیشتر نبود و دیگر حتم دارم بخاطر طولانی بودن رشته خطا رخ نداده است.
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#8
دوستان عزیز کسی نیست به داد ما برسه؟
پاسخ

دریافت اطلاعات از سرور اینترنت (برنامه نویسی اندروید)

#9
دوستانیکه گیرشون مشکل منه با خرید فیلم پایین برطرف میشه !

http://www.kelidestan.com/keys/keys.php?key=3439

نمیدونم چرا مدیر چند روزه راه حل را معرفی نکرد!!!
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)