View Full Version : سوال در مورد گرفتن یک متن داخل فایل txt از لینک
  
Sir-Programmer
یک شنبه 19 مهر 1394, 19:45 عصر
با سلام میخوام فایل متنی که روی اینترنت آپلود کردم رو بگیرم و در برنامه نمایش بدم باید چیکار کنم خیلی گفتم کدها ایراد داشت ممنون میشم جواب بدین
pbm_soy
یک شنبه 19 مهر 1394, 22:00 عصر
با کد زیر میتوانید اینکار را انجام دهید
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.vogella.com");
HttpResponse response = client.execute(request);
// Get the response
BufferedReader rd = new BufferedReader
  (new InputStreamReader(response.getEntity().getContent( )));
    
String line = "";
while ((line = rd.readLine()) != null) {
  textView.append(line);
}
در کد فوق در بخش آدرس وب اون سایت آدرس خودتان را بگذارید مانند http://www.test.com/file.txt
در ضمن حتما این کد را توسط یک ترد مجزا اجرا کنید و یا توسط asynctask درغیراینصورت خطا خواهد گرت
Sir-Programmer
دوشنبه 20 مهر 1394, 11:51 صبح
عاقا این واسه من ارور میشه خواهشا کسی نیست یه قطعه کد تست شده بزاره ؟؟؟؟؟ مممنون میشم خیلی کارم گیره
Sir-Programmer
دوشنبه 20 مهر 1394, 12:18 عصر
سلام دوباره اینو پیدا کردم جواب میده
    private class GetStringFromUrl extends AsyncTask<String, Void, String> {
        ProgressDialog dialog ;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // show progress dialog when downloading 
            dialog = ProgressDialog.show(Main.this, null, "Downloading...");
        }
        @Override
        protected String doInBackground(String... params) {
            // @BadSkillz codes with same changes
            try {
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(params[0]);
                HttpResponse response = httpClient.execute(httpGet);
                HttpEntity entity = response.getEntity();
                BufferedHttpEntity buf = new BufferedHttpEntity(entity);
                InputStream is = buf.getContent();
                BufferedReader r = new BufferedReader(new InputStreamReader(is));
                StringBuilder total = new StringBuilder();
                String line;
                while ((line = r.readLine()) != null) {
                    total.append(line + "\n");
                }
                String result = total.toString();
                Log.i("Get URL", "Downloaded string: " + result);
                return result;
            } catch (Exception e) {
                Log.e("Get Url", "Error in downloading: " + e.toString());
            }
            return null;
        }
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            // TODO change text view id for yourself
            TextView textView = (TextView) findViewById(R.id.textView1);
            // show result in textView
            if (result == null) {
                textView.setText("Error in downloading. Please try again.");
            } else {
                textView.setText(result);
            }
            // close progresses dialog
            dialog.dismiss();
        }
    }
برای استفاده باید از کد زیر استفاده کنیم
new GetStringFromUrl().execute("http://www.google.com/");
حالا میخوام این متنی که میگیره رو درون یه متغییر استرینگ بزارم باید چیکار کنم ؟؟؟
pbm_soy
دوشنبه 20 مهر 1394, 13:02 عصر
خوب دوست عزیز منم همین کدی که شما نوشتید را گذاشتم دیگه! ودر ضمن اون کد را من تو چندین برنامه استفاده کردم مشکلی نداشت
فقط در آخر پست گفتم که در یک ترد مجزا بنویسیدش و یا در asyntask بنویسید در نمونه کد شما همان کدی که من گذاشتم را در asynctask گذاشته
در کد شما متد onpostexecution را توجه کنید در آن نتیجه یا همان محتوای صفحه مورد نظر در متغییر رشته ای result قرار دارد و در آخر کد آنرا در یک textview نمایش داده حالا سوال شما چیست؟!
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.