在 WSO2 API 管理器中使用 POST 请求时出现错误 411

Error 411 when using POST request in WSO2 API Manager

我已经通过 WSO2 创建了一个 API API 管理器 curl GET 请求工作正常,如下所示:

但是在尝试设置 POST 请求时,我收到以下消息“错误 411:需要长度”

我尝试了不同的方法,例如禁用分块或强制内容长度 header(因为 WSO2 默认删除 header),方法是更改​​序列文件,如下所示,但无济于事:

奇怪的是,我使用命令提示符发出相同的 post 请求,即使我没有指定 content-length header 也能正常工作,这表明它是自动添加的(如果我错了请纠正我):

一定是我做错了什么,你能帮帮我吗?

提前致谢。

此致,

请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/411 了解您遇到的 411 错误。 当curl请求中没有传递content-length header时会抛出411错误。

  • 您在link中分享的图片不清晰。请重新上传图片或分享curl命令和响应更方便。
  • 以文本格式分享序列。
  • 如果删除序列,服务器是否仍会抛出错误?

您的第二个 cUrl 请求看起来有点奇怪,原因有两个:

有效的 NGSI-v2 POST 请求类似于:

curl -L -X POST 'http://localhost:1026/v2/entities/' \
-H 'Content-Type: application/json' \
--data-raw '{
   Body Goes HERE
}'

您的图像包含 headers Content-Length=auxContent-Type: multipart/form-data 并且未引用 -d 元素。

我能够使用以下 inSequence(中介文件)对这个问题进行排序:

<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse"
          name="contentLengthadd">
        <property name="COPY_CONTENT_LENGTH_FROM_INCOMING" value="true" scope="axis2"/>
        <property name="FORCE_HTTP_CONTENT_LENGTH" scope="axis2" value="true"></property>
</sequence>

默认情况下,WSO2 会删除 content-length header 因此您需要确保它会被添加。这个序列的作用是计算要发送的有效负载,然后添加 content-length header.

的值编号