دریافت اطلاعات فایل txt از طریق url درآندروید

سوال : اگر بخوام مثلا عنوان رو از یه لینک متنی تو یه هاست ( http://www.name.com/file.txt ) بگیرم به چه صورت باید عمل کنم ؟

پاسخ :  در ادامه با مثال ساده ای فایل txt رو از طریق url باز میکنیم و اطلاعات داخل فایل را در متغییر result ذخیره میکنیم و این نکته رو هم فراموش نکنید که دسترسی به اینترنت رو به برنامه اضافه کنید .

فایل Main.java :

package com.tooba.co;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
 
public class Main extends Activity {
 
    private EditText etResponse;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        etResponse = (EditText) findViewById(R.id.etResponse);
        new HttpAsyncTask().execute("http://192.168.0.152/index.txt");
    }
 
    public static String GET(String url){
        InputStream inputStream = null;
        String result = "";
        try {
 
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse httpResponse = httpclient.execute(new HttpGet(url));
            inputStream = httpResponse.getEntity().getContent();
 
            if(inputStream != null)
                result = convertInputStreamToString(inputStream);
            else
                result = "Did not work!";
 
        } catch (Exception e) {
            Log.d("", e.getLocalizedMessage());
        }
 
        return result;
    }
 
    private static String convertInputStreamToString(InputStream inputStream) throws IOException{
        BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
        String line = "";
        StringBuilder result = new StringBuilder();
        while((line = bufferedReader.readLine()) != null)
            result.append(line+"\n");
 
        inputStream.close();
        return result.toString();
 
    }
 

    private class HttpAsyncTask extends AsyncTask<String, Void, String> {
        protected String doInBackground(String... urls) {
            return GET(urls[0]);
        }

        protected void onPostExecute(String result) {
            Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
            etResponse.setText(result);
       }
    }
 
}

فایل main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

 
    <EditText
        android:id="@+id/etResponse"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:ems="10"
        android:layout_marginTop="10dp"
        android:inputType="textMultiLine" >
 
        <requestFocus />
    </EditText>
 
</LinearLayout>

فایل AndroidManifest.xml (دسترسی به اینترنت رو هم در این فایل اضافه کنید) :

	<uses-permission android:name="android.permission.INTERNET" />

در لاین ۲۷ فایل Main.java آدرس فایل txt را تغییر بدهید .

  1. علی رسالت - 1 اکتبر 2015

    خیلی هم خوب هیچ مشکلی نداره
    ممنون

  2. احسان کریمی - 22 مارس 2018

    سلام خسته نباشید

    من این کد ها رو تست کردم تو نسخه های قدیمی اندروید مشکلی نداره
    اما الان این خطاها رو دریافت میکنم

    Error:(145, 37) error: incompatible types: DefaultHttpClient cannot be converted to HttpClient
    Error:(146, 51) error: cannot find symbol method execute(HttpGet)
    Error:(306, 41) error: incompatible types: DefaultHttpClient cannot be converted to HttpClient
    Error:(309, 55) error: cannot find symbol method execute(HttpGet,HttpContext)

    با استفاده از این کتابخونه ها
    compile ‘org.apache.httpcomponents:httpcore:4.4.1’
    compile ‘org.apache.httpcomponents:httpclient:4.5’
    تونستم خطاهای قبلی رو بر طرف کنم
    حتا اینم اضافه کردم
    seLibrary ‘org.apache.http.legacy’
    همه مشکلات تموم شد فقط این خطای بالا که درج کردم مونده راه حل چیه؟
    میشه اموزش بالا و کدهاشو به روز کنید
    که خطای این execute هم بر طرف بشه
    ممنون


همینک دیدگاه خود را برای ما بنویسید!