Android как сервер веб-сервиса? - PullRequest
0 голосов
/ 31 мая 2011

возможно, в отличие от других, я думаю о запуске сервера веб-сервиса на Android.Есть ли библиотека, которая поддерживает это?Я думаю, что ksoap2 eg предназначен только для использования веб-сервисов, а не для их обслуживания, верно?

И, если это невозможно без продолжительного кодирования, мне просто нужно запустить HTTP-сервер на Android и получать с ним двоичные файлы (через POST).

Кто-нибудь может дать некоторые подсказки?

Ура, Марк

Ответы [ 3 ]

2 голосов
/ 13 июня 2011

Наконец, я отбросил мысль о реализации этого с помощью веб-сервиса на стороне Android и просто сумел сделать это с помощью Socket-Communication и самостоятельно разработанного протокола, примерно так:

public class AsyncTaskSocketServer extends AsyncTask<Integer, String, Integer> {

private int id;
private String TAG = "AsyncTaskSocketServer";

private AsyncTaskSocketServer() {
    super();
    Random generator = new Random();
    id = generator.nextInt();
    Log.d(TAG, "created with id: " + id);
}

@Override
protected Integer doInBackground(Integer... ports) {

    int port = ports[0];
    Log.v(TAG, "Trying to start on port: " + port + " with id: " + id);

    try {
        ServerSocket serverSocket = new ServerSocket(port);

        while (!isCancelled()) {
            Socket client = serverSocket.accept();
            try {
                Log.v(TAG, "Listening on port: "
                        + port);
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(client.getInputStream()));
                String str = in.readLine();
                publishProgress(str);

            } catch (Exception e) {
                e.printStackTrace();
                Log.v(TAG, "Exception while socket.accept"+ id);
            } finally {
                client.close();
            }
            client.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
        Log.v(TAG, "Exception in SocketServer creation" + id);
    }
    return port;
}

@Override
protected void onProgressUpdate(String... values) {
    super.onProgressUpdate(values);
    String message = values[0];
    try {
        NetworkQueue.MESSAGE_IN_QUEUE.put(message);
        Log.v(TAG, "received: " + message);
    } catch (Exception e) {
        Logger.log("AsyncTaskSocketServer: Exception while writing to IN_QUEUE");
    }
}
}
0 голосов
/ 31 мая 2011

В принципе вы можете сделать это, но без root вы не сможете привязать привилегированный порт, такой как порт 80, или установить значение OOM killer для приоритезации сохранения вашего сервера над другими вещами, которым может потребоваться память.

И, конечно, вы не сможете многое сделать, если только вышестоящий провайдер Wi-Fi или 3G не предоставит вам IP-адрес, который маршрутизируется интересующими вас клиентами.

0 голосов
/ 31 мая 2011

Первый результат http сервера android: http://code.google.com/p/i-jetty/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...