@Override public Event intercept(Event event) { byte[] body = event.getBody(); String log = new String(body, StandardCharsets.UTF_8); boolean flag = false; try { JSONObject.parseObject(log); flag = true; } catch (JSONException e) { } return flag ? event : null; }
时间: 2024-02-15 16:27:52 浏览: 22
这是一个拦截器类的intercept方法,用于对收集到的日志进行解析和过滤。
首先将Event中的消息体转换成字符串类型的log,然后使用阿里巴巴的fastjson库对log进行解析,将其转换成JSONObject对象。如果解析成功,则将flag变量设置为true,否则flag为false。
最后,如果flag为true,则返回原始的Event对象;如果flag为false,则返回null,表示该Event对象被过滤掉了。这样可以保证只有符合要求、能够被解析的日志才会被发送到下一个处理节点。
相关问题
convertBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text2 = editText2.getText().toString(); String apiUrl = "https://yurl6.cn/user/api.php"; String curl = "curl=" + text2; OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody requestBody = RequestBody.create(mediaType, "{\"curl\":\"" + curl + "\"}"); Request request = new Request.Builder() .url(apiUrl) .post(requestBody) .build(); try { Response response = client.newCall(request).execute(); String result = response.body().string(); JSONObject jsonObject = new JSONObject(result); String shortUrl = jsonObject.getString("shortUrl"); editText3.setText(shortUrl); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } }); } 在点击按钮后,app闪退
闪退可能是由于一些异常情况引起的,例如网络连接异常或JSON解析错误等。你可以在捕获异常的代码块中打印出异常信息来调试代码。请尝试以下修改,看看是否能够解决问题:
```java
convertBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text2 = editText2.getText().toString();
String apiUrl = "https://yurl6.cn/user/api.php";
String curl = "curl=" + text2;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody requestBody = RequestBody.create(mediaType, "{\"curl\":\"" + curl + "\"}");
Request request = new Request.Builder()
.url(apiUrl)
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
String result = response.body().string();
JSONObject jsonObject = new JSONObject(result);
String shortUrl = jsonObject.getString("shortUrl");
editText3.setText(shortUrl);
} catch (IOException | JSONException e) {
e.printStackTrace();
}
}
});
```
同时,请确保你已经在Manifest.xml中声明了网络权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
public void serach(final String serachinput) { if (serachinput.equals("") || serachinput == null) { load(); } else { new Thread(new Runnable() { @Override public void run() { try { String url = "/computer/serach?componname=" + serachinput; Call call = okhttputil.request_get(url); Response execute = call.execute(); String string = execute.body().string(); JSONObject jsonObject = new JSONObject(string); data = jsonObject.getString("data"); handler.post(udpUIRunnable); } catch (Exception e) { e.printStackTrace(); } } }).start(); }
这段代码看起来像是一个搜索功能,输入一个搜索关键词,然后会向服务器发送请求,获取搜索结果。如果搜索关键词为空或者为 null,就会调用 load() 方法,否则会新建一个线程来发送请求,并将搜索结果存储在 data 变量中,最后通过 handler.post() 方法将搜索结果更新到 UI 界面上去。