如何在Java中调用RapidAPI的LanguageTool API校验自定义字符串
问题原因
你直接传入自定义字符串无法运行,是因为该接口要求POST请求的 body 为application/x-www-form-urlencoded格式的参数,不能直接把待校验文本传给.method()方法,需要按照接口参数要求构造合法的请求体。
修改步骤
- 对自定义的待校验字符串做URL编码,避免空格、特殊符号导致参数解析错误,使用Java自带的
java.net.URLEncoder工具类即可完成编码。 - 将编码后的字符串拼接到
text=参数后,和language参数拼接为完整的请求体,再传入HttpRequest.BodyPublishers.ofString()中。
修改后的完整代码示例
import java.net.URI; import java.net.URLEncoder; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; public class LanguageToolTest { public static void main(String[] args) throws Exception { // 你的自定义待校验字符串 String myString = "Hello World. Hello World. Hello World."; // 对文本做URL编码 String encodedText = URLEncoder.encode(myString, StandardCharsets.UTF_8); // 构造完整的请求体 String requestBody = "text=" + encodedText + "&language=en-US"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://dnaber-languagetool.p.rapidapi.com/v2/check")) .header("content-type", "application/x-www-form-urlencoded") .header("x-rapidapi-host", "dnaber-languagetool.p.rapidapi.com") .header("x-rapidapi-key", "[替换为你自己的rapidapi-key]") .method("POST", HttpRequest.BodyPublishers.ofString(requestBody)) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } }
补充说明
原示例代码里的text=This%20is%20a%20error.&language=en-US中,%20就是空格经过URL编码后的结果,如果你直接拼接原始字符串,请求会因为参数格式非法被接口拒绝。
内容的提问来源于stack exchange,提问作者awawawaw
相关产品推荐
相关产品推荐

