我已经使用Python Hug创建了一个Rest API,该API接受列表作为参数。
Python REST API代码
import hug
@hug.get('/myFunc/')
def myFunc(textList)
print(len(textList))
print(type(textList))
Java代码
List<String> textArr = new ArrayList<String>();
File htmlsFolder = new File(#html Folder Path);
try {
File[] files = htmlsFolder.listFiles();
for (File file : files) {
html = new String(Files.readAllBytes(Paths.get(file.getPath())));
Document doc = Jsoup.parse(html);
textArr.add(doc.body().text().replaceAll("[\\n\\t\\r\\s+]", " "));
}
System.out.println(textArr.size());
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
ResponseEntity<String> response = restTemplate.exchange("http://apiurl/myFunc?textList="+textArr.toString(), HttpMethod.GET, entity, String.class);
Java代码从文件夹路径读取/解析html文件,并将内容存储在arrayList中。如果有17个html文件,则arrayList的大小为17。当调用Python REST API时,我在python端打印列表的长度,列表项的长度不相同,大约为500。这是由于在GET请求中将参数作为查询字符串发送,还是Java arrayList和Python List之间存在转换问题?
System.out.println(textArr.size()); #gives 17(Java代码)
print(len(textList))#gives 543(Python代码)
答案 0 :(得分:0)
此问题已解决,方法是将api设为POST方法,将Java的值作为请求主体传递,并在Python端将输入作为主体获取。
import hug
@hug.post('/myFunc/')
def myFunc(body)
textList = body['textList']