我正在使用命令java -jar ws.jar
运行Java Web服务(JAX-RS)。该应用程序基于Eclipse构建。
当我收到GET请求时,收到以下错误:
org.eclipse.jetty.http.HttpParser - URI is too large >8192
我尝试更改取消注释并添加" 0"在这些行的末尾/opt/jett/start.ini
,但我得到同样的错误。
## Max response content write length that is buffered (in bytes)
jetty.httpConfig.outputAggregationSize=81920
## Max request headers size (in bytes)
jetty.httpConfig.requestHeaderSize=81920
## Max response headers size (in bytes)
jetty.httpConfig.responseHeaderSize=81920
我知道增加URI大小的风险,但我确实需要进行研究测试。
答案 0 :(得分:0)
当您尝试使用参数太大的 HTTP POST 请求时,也会出现此问题,因此 URI 变得太大。这是因为参数被附加到 URI 中,就像在 GET 请求中一样。简单的方法是使用多部分 API,如下代码中所述:
@PostMapping(value = "/video", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<IngestionResponseDTO> ingestVideo(@RequestPart("file") MultipartFile file, @RequestPart("jsonMetadata") String videoIngestionDTO){...}
上传带有请求体的文件的Python代码如下:
with open(filepath, 'rb') as file:
files = {'file': file, 'jsonMetadata': json.dumps(body_data)}
response = requests.post(
f"http://{self.upload_host}:{self.upload_port}/upload",
headers=headers, files=files)