Skip to content Skip to sidebar Skip to footer

Sending Data To Server From Text File Using A Service

I am sending data from text file to server using service code given below. It sends data line by line to server. I want the service to run in background continuously.For this I hav

Solution 1:

I have Modify your code:

Check my all code this ll give you idea about send line one by one. Please do rest of logic this way. i have also remove some method.

This is not all code but it ll give you IDEA.

package com.example.getjson;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.HttpEntity;
import org.apache.http.entity.StringEntity;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Environment;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class backservice extends Service {

    private static final String TAG = "BackgroundService";
    String line = null;
    Context mContext = null;
    File file;
    RandomAccessFile in = null;
    StringEntity se;
    HttpEntity entity = null;
    final static int SERVICE_NAME = 1;
    int WORK_TYPE;
    String response;
    String input = "";

    public backservice() {
        // super(TAG);
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "in BackgroundService",
                Toast.LENGTH_LONG).show();
        mContext = getBaseContext();
        WORK_TYPE = 2;
        // new BackgroundTask(mContext).execute();
        switch (WORK_TYPE) {
        case 2:
            File file = new File(Environment.getExternalStorageDirectory(),
                    "/BPCLTracker/gpsdata.txt");
            int i = 0;

            RandomAccessFile in = null;
            try {
                in = new RandomAccessFile(file, "rw");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                while ((line = in.readLine()) != null) {
                    input = line.toString();
                    // response = sendDataToServer(input);
                    new BackgroundTask(mContext).execute();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        }
        return super.onStartCommand(intent, flags, startId);
    }

    public class BackgroundTask extends AsyncTask<String, String, Void> {

        Context mContext = null;

        public BackgroundTask(Context context) {
            mContext = context;
        }

        protected void onPreExecute() {
            Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_LONG)
                    .show();
        }

        protected Void doInBackground(final String... args) {
            response = sendDataToServer(input);
            return null;
        }

        protected void onPostExecute(final Void unused) {

        }
    }

    public void callService(int work) {
        WORK_TYPE = work;
        new BackgroundTask(mContext).execute();
    }

    public String sendDataToServer(String data) {
        StringBuffer sb = new StringBuffer("");
        String serverUrl = "http://67.23.166.35:80/android/insert.php";
        try {
            URL url = new URL(serverUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setConnectTimeout(6 * 10 * 1000);
            conn.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded;charset=UTF-8");
            conn.setRequestMethod("POST");

            OutputStreamWriter wr = new OutputStreamWriter(
                    conn.getOutputStream());
            wr.write(data);
            wr.flush();

            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    conn.getInputStream()));

            String line = "";
            while ((line = rd.readLine()) != null) {
                // Process line...
                sb.append(line);
            }

            wr.close();
            rd.close();
            return sb.toString();
        } catch (Exception e) {
            Log.d("Exception : ", e.getStackTrace().toString());
        }

        return sb.toString();
    }
}

Post a Comment for "Sending Data To Server From Text File Using A Service"