java - 从 Java 获取 GET 请求参数到 Python Hug REST API
问题描述
我使用 Python Hug 创建了一个 Rest 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 代码)
解决方案
通过将 api 作为 POST 方法,将来自 Java 的值作为请求主体传递,并在 Python 端获取输入作为主体,该问题已得到解决。
import hug
@hug.post('/myFunc/')
def myFunc(body)
textList = body['textList']
推荐阅读
- c# - 为什么不能将具有浮点值的对象强制转换为双精度值?
- single-sign-on - Microsoft Edge 中的集成 Windows 身份验证
- c++11 - 分段错误智能指针
- javascript - 如何使用具有多个数组的对象的钩子设置状态?如何在这里设置债务人?
- android-studio - 如何在 Android Studio 中隐藏 dart 代码的水平和垂直引导线
- python - 我在扫描字符串文字时出现错误“eol”
- r - 如何擦除单元格中的多个字符?
- shell - 为什么我的 find cmd 在手动执行而不是从脚本执行时会产生结果
- css - 在 React 应用程序中使用引导程序根据指定高度显示列的网格
- dynamics-crm - 用于操作 msdyn_BookingResource 和 msdyn_BookingResourceRequirement 的 Web Api 查询