達成された効果:
データベースにデータを保存する前にセンシティブな単語を検索することです. センシティブな単語がある場合, センシティブな単語があることを促し, 提出は失敗し、データベースに保存できません.
使用する API:
中国語と英語のセンシティブ ワード フィルタリング
アイデア: 最初に API にアクセスするメソッドをカプセル化し、必要に応じてこのメソッドを呼び出し、コンテンツをサーバーに投稿してフィルタリングし、json 形式でデータを返し、json 形式でデータを分析し、内部のデータ データを取得します (つまり、フィルタリングされたコンテンツ、ウェブサイトはセンシティブ ワードを * に置き換えます。このとき、データ データをデータベースに直接保存できるため、読み出されるのはセンシティブ ワードが * に変更されたコンテンツです。データを元のコンテンツと比較できます 比較して、変化がない場合はセンシティブな言葉がないことを意味し、変化がある場合はセンシティブな言葉があることを意味し、センシティブな言葉があることを促します公開に失敗した単語。
具体的なプロセス:
1. json 解析に必要な依存関係をインポートします。
implementation 'com.alibaba:fastjson:1.1.54.android'
2. メソッドをカプセル化します。TextFilter クラスを作成します。
ps: コード内の秘密鍵は上記の Web サイトに入ることができます. テスト API をクリックした後、[トークンの選択] をクリックして、独自の秘密鍵を取得します.
関数パラメータ内容は、取得したユーザー入力内容です。
package com.example.academymanageapp.adapter;
import com.alibaba.fastjson.JSONObject;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class TextFilter {
private String data;//调用该函数,返回data数据
public String textFilterTest(String content){
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
String string = "text="+content;
RequestBody body = RequestBody.create(mediaType, string);
Request request = new Request.Builder()
.url("https://eolink.o.apispace.com/text-filters/api/v1/forward/text_filter/")
.method("POST",body)
.addHeader("X-APISpace-Token","7iv06pckr9yrbl3nqyrbcau9umy05vts")
.addHeader("Authorization-Type","apikey")
.addHeader("Content-Type","application/x-www-form-urlencoded")
.build();
Response response;
try {
response = client.newCall(request).execute();
//获取data数据
String result = response.body().string();
JSONObject jsonObject = JSONObject.parseObject(result);
data = jsonObject.getString("data");
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
}
ps: この手順で注意すべき点が 2 つあります。
- RequestBody body = RequestBody.create(mediaType, string) は、コンテンツの前に "text=" を追加する必要があります。そうしないと、形式が正しくありません。
- response.body() は一度しか使用できません。
3. 必要に応じて TextFilter の textFilterTest を呼び出すだけです。