1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-ohosAsync

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

OHosAsync — низкоуровневая сетевая библиотека протоколов

Если вам нужна простая в использовании, высокоуровневая библиотека запросов HTTP, поддерживающая Ohos, обратите внимание на Ion (она построена на основе OHosAsync). Вероятно, типичному разработчику приложений для Ohos будет интереснее использовать Ion.

Но если вам нужен необработанный сокет, клиент/сервер HTTP(s) и библиотека WebSocket для Ohos — OHosAsync это то, что вам нужно.

Особенности

  • На основе NIO. Однопоточная и управляемая обратными вызовами.
  • Все операции возвращают Future, которое можно отменить.
  • Клиент сокета + сервер сокетов.
  • HTTP-клиент + сервер.
  • Веб-сокет клиент + сервер.

Интеграция и конфигурация

Метод один:

Через library сгенерировать har-пакет, добавить har-пакет в папку libs.
В entry gradle добавить следующий код:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Метод два:

allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:OhosAsyncLibrary:1.0.4'

Функционал

Скачать URL в строку

      Uri parse = Uri.parse("https://httpbin.org/get");
      AsyncHttpRequest get = new AsyncHttpRequest(parse, "GET");
     AsyncHttpClient.getDefaultInstance().executeString(get,
         new AsyncHttpClient.StringCallback() {
            @Override
            public void onCompleted(Exception e, AsyncHttpResponse source, String result)
            {
                LogUtil.info(LOGTAG, result);
            }
        });

Загрузить JSON из URL

   Uri parse = Uri.parse("https://xxxxxxxxxxxx");
   AsyncHttpRequest get = new AsyncHttpRequest(parse, "GET");
   AsyncHttpClient.getDefaultInstance().executeJSONObject(get,
        new AsyncHttpClient.JSONObjectCallback() {
            @Override
            public void onCompleted(Exception e, AsyncHttpResponse source,
            JSONObject result) {
                LogUtil.info(LOGTAG, result.toString());
            }
        });
*Или для JSONArrays...
        Uri parse = Uri.parse("https://xxxxxxxxxxxx");
        AsyncHttpRequest get = new AsyncHttpRequest(parse, "GET");
        AsyncHttpClient.getDefaultInstance().executeJSONArray(get,
        new AsyncHttpClient.JSONArrayCallback() {
            @Override
            public void onCompleted(Exception e, AsyncHttpResponse source,
            JSONArray result) {
                LogUtil.info(LOGTAG, result.toString());
            }
        });

Скачать URL в файл

     AsyncHttpClient.getDefaultInstance().executeFile(new AsyncHttpGet(url),
     filename,   new AsyncHttpClient.FileCallback() {
            @Override
            public void onCompleted(Exception e, AsyncHttpResponse response,
            File result) {
                if (e != null) {
                    e.printStackTrace();
                    return;
                }
            }
        });

Кэширование поддерживается

 try {
            ResponseCacheMiddleware.addCache(AsyncHttpClient.getDefaultInstance(), FileUtils.createCach(getContext()), 1024 * 1024 * 10);
        } catch (IOException e) {
            e.printStackTrace();
        }

Нужно сделать multipart/form-data загрузки? Это тоже работает

 AsyncHttpPost post = new AsyncHttpPost("http://myservercom/postform.html");
        MultipartFormDataBody body = new MultipartFormDataBody();
        body.addFilePart("my-file", new File("/path/to/file.txt"));
        body.addStringPart("foo", "bar");
        post.setBody(body);
        AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback(){
            @Override
            public void onCompleted(Exception ex, AsyncHttpResponse source, String result) {
                if (ex != null) {
                    ex.printStackTrace();
                    return;
                }
                System.out.println("Server says: " + result);
            }
        });

Можно также создать веб-сокеты

     AsyncHttpClient.getDefaultInstance().websocket("get", "my-protocol", new AsyncHttpClient.WebSocketConnectCallback() {
            @Override
            public void onCompleted(Exception ex, WebSocket webSocket) { **Если (ex != null) {**

    ex.printStackTrace();

    return;

**}**

webSocket.send("a string");

webSocket.send(new byte[10]);

webSocket.setStringCallback(new WebSocket.StringCallback() {

    public void onStringAvailable(String s) {

        System.out.println("Я получил строку: " + s);

    }

});

webSocket.setDataCallback(new DataCallback() {

    public void onDataAvailable(DataEmitter emitter, ByteBufferList byteBufferList) {

        System.out.println("Я получил несколько байтов!");

        // обратите внимание, что эти данные были прочитаны

        byteBufferList.recycle();

    }

});

**});**

### OhosAsync также позволяет создавать простые HTTP-серверы
```java
AsyncHttpServer server = new AsyncHttpServer();

List<WebSocket> _sockets = new ArrayList<WebSocket>();

server.get("/", new HttpServerRequestCallback() {

    @Override

    public void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {

        response.send("Hello!!!");

    }

});

// слушаем на порту 5000

server.listen(5000);

// переход по адресу http://localhost:5000 вернёт Hello!!!

### И WebSocket-серверы

```java

AsyncHttpServer httpServer = new AsyncHttpServer();

httpServer.listen(AsyncServer.getDefault(), port);

httpServer.websocket("/live", new AsyncHttpServer.WebSocketRequestCallback() {

    @Override

    public void onConnected(final WebSocket webSocket, AsyncHttpServerRequest request) {

        _sockets.add(webSocket);

        // Используйте это для очистки любых ссылок на ваш WebSocket

        webSocket.setClosedCallback(new CompletedCallback() {

            @Override

            public void onCompleted(Exception ex) {

                try {

                    if (ex != null)

                        Log.e("WebSocket", "Произошла ошибка", ex);

                } finally {

                    _sockets.remove(webSocket);

                }

            }

        });

        webSocket.setStringCallback(new StringCallback() {

            @Override

            public void onStringAvailable(String s) {

                if ("Hello Server".equals(s))

                    webSocket.send("Welcome Client!");

            }

        });

    }

});

//..Позже, транслируем!

for (WebSocket socket : _sockets)

    socket.send("Fireball!");

## Лицензии

Copyright 2013 Koushik Dutta (2013)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

End

Примечание: в тексте запроса присутствуют фрагменты кода на языке Java. В ответе они сохранены без изменений.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-ohosAsync.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-ohosAsync.git
oschina-mirror
HarmonyOS-tpc-ohosAsync
HarmonyOS-tpc-ohosAsync
master