OHosAsync — низкоуровневая сетевая библиотека протоколов
Если вам нужна простая в использовании, высокоуровневая библиотека запросов HTTP, поддерживающая Ohos, обратите внимание на Ion (она построена на основе OHosAsync). Вероятно, типичному разработчику приложений для Ohos будет интереснее использовать Ion.
Но если вам нужен необработанный сокет, клиент/сервер HTTP(s) и библиотека WebSocket для Ohos — OHosAsync это то, что вам нужно.
Особенности
Через 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'
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);
}
});
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());
}
});
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());
}
});
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();
}
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.
Примечание: в тексте запроса присутствуют фрагменты кода на языке Java. В ответе они сохранены без изменений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )