我在WSO2 AM中设置了一个REST端点,该REST端点调出到另一个REST端点。拨打电话时,我收到一个411响应代码。请求包含JSON正文,内容类型和接受标头都设置为application/json。我可以使用相同的参数直接调用WSO2正在访问的支持服务,并且它可以正常工作。看来WSO2 AM正在剥离或不发送内容长度。411对从WSO2 API管理器发布到REST端点的响应
为什么内容长度未被发送到正在访问的REST端点?
我在WSO2 AM中设置了一个REST端点,该REST端点调出到另一个REST端点。拨打电话时,我收到一个411响应代码。请求包含JSON正文,内容类型和接受标头都设置为application/json。我可以使用相同的参数直接调用WSO2正在访问的支持服务,并且它可以正常工作。看来WSO2 AM正在剥离或不发送内容长度。411对从WSO2 API管理器发布到REST端点的响应
为什么内容长度未被发送到正在访问的REST端点?
默认情况下,发送内容长度处于禁用状态,因为它会导致性能下降。但是你可以通过在api的序列中添加以下内容来启用它。 (见https://docs.wso2.com/display/AM1100/Adding+Mediation+Extensions上添加自定义序列,以一个API)
<property name="COPY_CONTENT_LENGTH_FROM_INCOMING" value="true" scope="axis2"/>
<property name="FORCE_HTTP_CONTENT_LENGTH" scope="axis2" value="true"></property>
下面是示例sequnce
<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>
该序列会得到从传入的请求的请求内容的长度和请求报头将它传递到后端。
你可以阅读更多有关这两个属性在https://docs.wso2.com/display/ESB481/HTTP+Transport+Properties#HTTPTransportProperties-FORCE_HTTP_CONTENT_LENGTH
我创建了一个名为WSO2AM - Ext - Out.xml的文件,尝试使其成为全局参数。我将上面的XML示例复制到该文件中,更改名称以匹配文件名。我在你提到的链接上根据文档做了这个。完成这个并重新启动后,我仍然收到一个411.一个告诫,我正在APIM Store中测试它,并且正在尝试使用Curl。 –
@MikeH序列应该在序列中,而不是在序列中。所以序列名称应该是WSO2AM - Ext - In。 –
在什么API Manager版本是你想?你正在发送一个请求还是请求? – lakshman
POST和版本1.10 –