网关的HTTP方法不允许错误

2020-08-20 12:48发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

当我在GW Client(/IWFND/GW_CLIENT)中测试我的odata服务时,它总是显示"数据服务请求URI所标识的资源不允许使用指定的HTTP方法"。 (它与 sdata 一起很好地工作)。 我无法弄清楚,我们被封锁了。 有人能帮我一下吗? 谢谢。

这是有关我的实施和测试环境的信息,我实施了一项保存计数文档的操作。

这里是CountingDoc实体和返回实体

* ---------------------------------------------- ------------------------------------
*实体:盘点凭证抬头
*- -------------------------------------------------- -------------------------------
lo_entity_type =模型-> create_entity_type('CountingDoc')。 " #EC NOTEXT
lo_property = lo_entity_type(>。_property = lo_entity_type(iv.prop_ty_name 'iv_abap_fieldname ='FISCALYEAR')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='siteID'iv_abap_fieldname ='PLANT')。 iv_property_name ='stgeLocID'iv_abap_fieldname ='STGE_LOC')。

.....
lo_entity_type-> bind_structure('/SRSMOB/STOP_COUNTING_DOC')。

lo_entity_type-> set_creatable(abap_true)。

lo_entity_type-> set_updatable(abap_true)。

lo_entity_type-> set_deletable(abap_true)。

* ---------------------------------------------- ------------------------------------
*实体:ExecutionMessage
* --- -------------------------------------------------- -----------------------------
lo_entity_type =模型-> create_entity_type('ExecutionMessage')。 " #EC NOTEXT
lo_property = lo_entity_type-> create_property(iv_property_name ='type'iv_abap_fieldname ='TYPE')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property 'iv_abap_fieldname ='ID')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='number'iv_abap_fieldname ='NUMBER')。
...

注意:

这是模型中的POST操作,

lo_action =模型-> create_action('SaveCountingLineItemList')。 " #EC NOTEXT
lo_action-> SET_HTTP_METHOD(/iwbep/if_mgw_med_odata_types => gcs_med_http_methods-POST)。
lo_action-> set_return_entity_type('ExecutionMessage')。
lo_action-> set_action_for。 br> lo_action-> set_return_multiplicity(/iwbep/if_mgw_med_odata_types => gcs_cardinality-cardinality_1_n)。 ('/SRSMOB/STOP_VALUE_CHAR')。

lo_parameter = lo_action-> create_input_parameter(iv_parameter_name ='fiscalYear'iv_abap_fieldname ='FISCAL_YEAR')。

我没有将运行时代码粘贴到这里,因为请求永远不会到达那里并且sdata可以工作。

我正在使用GW客户端(/IWFND/GW_CLIENT)进行测试。 未设置〜CHECK_CSRF_TOKEN。 因此,启用了CSRF安全性,并且由于使用GW Client,因此我不必担心此安全性令牌。 我的网址和错误如下所示。

URL:/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList?docId ='300000314'&fiscalYear ='2013'

以下是此函数导入的在线数据:

- < 功能导入 名称 =" SaveCountingLineItemList " 返回类型 =" 集合(STORE_OPERATIONS.ExecutionMessage) " 实体集 =" ExecutionMessageCollection " m:HttpMethod =" POST " SAP:作用 =" STORE_OPERATIONS.CountingDoc " > - < 参数 名称 =" countingID " 类型 =" Edm.String " 模式 =" " > - < 文献资料 > < 摘要 /> < 详细描述 > 值

- < 参数 名称 =" 财政年度 " 类型 =" Edm.String " 模式 =" " > - < 文献资料 > < 摘要 /> < 详细描述 > 值

谢谢。

致谢

史蒂芬

(60.7 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

当我在GW Client(/IWFND/GW_CLIENT)中测试我的odata服务时,它总是显示"数据服务请求URI所标识的资源不允许使用指定的HTTP方法"。 (它与 sdata 一起很好地工作)。 我无法弄清楚,我们被封锁了。 有人能帮我一下吗? 谢谢。

这是有关我的实施和测试环境的信息,我实施了一项保存计数文档的操作。

这里是CountingDoc实体和返回实体

* ---------------------------------------------- ------------------------------------
*实体:盘点凭证抬头
*- -------------------------------------------------- -------------------------------
lo_entity_type =模型-> create_entity_type('CountingDoc')。 " #EC NOTEXT
lo_property = lo_entity_type(>。_property = lo_entity_type(iv.prop_ty_name 'iv_abap_fieldname ='FISCALYEAR')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='siteID'iv_abap_fieldname ='PLANT')。 iv_property_name ='stgeLocID'iv_abap_fieldname ='STGE_LOC')。

.....
lo_entity_type-> bind_structure('/SRSMOB/STOP_COUNTING_DOC')。

lo_entity_type-> set_creatable(abap_true)。

lo_entity_type-> set_updatable(abap_true)。

lo_entity_type-> set_deletable(abap_true)。

* ---------------------------------------------- ------------------------------------
*实体:ExecutionMessage
* --- -------------------------------------------------- -----------------------------
lo_entity_type =模型-> create_entity_type('ExecutionMessage')。 " #EC NOTEXT
lo_property = lo_entity_type-> create_property(iv_property_name ='type'iv_abap_fieldname ='TYPE')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property 'iv_abap_fieldname ='ID')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='number'iv_abap_fieldname ='NUMBER')。
...

注意:

这是模型中的POST操作,

lo_action =模型-> create_action('SaveCountingLineItemList')。 " #EC NOTEXT
lo_action-> SET_HTTP_METHOD(/iwbep/if_mgw_med_odata_types => gcs_med_http_methods-POST)。
lo_action-> set_return_entity_type('ExecutionMessage')。
lo_action-> set_action_for。 br> lo_action-> set_return_multiplicity(/iwbep/if_mgw_med_odata_types => gcs_cardinality-cardinality_1_n)。 ('/SRSMOB/STOP_VALUE_CHAR')。

lo_parameter = lo_action-> create_input_parameter(iv_parameter_name ='fiscalYear'iv_abap_fieldname ='FISCAL_YEAR')。

我没有将运行时代码粘贴到这里,因为请求永远不会到达那里并且sdata可以工作。

我正在使用GW客户端(/IWFND/GW_CLIENT)进行测试。 未设置〜CHECK_CSRF_TOKEN。 因此,启用了CSRF安全性,并且由于使用GW Client,因此我不必担心此安全性令牌。 我的网址和错误如下所示。

URL:/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList?docId ='300000314'&fiscalYear ='2013'

以下是此函数导入的在线数据:

- < 功能导入 名称 =" SaveCountingLineItemList " 返回类型 =" 集合(STORE_OPERATIONS.ExecutionMessage) " 实体集 =" ExecutionMessageCollection " m:HttpMethod =" POST " SAP:作用 =" STORE_OPERATIONS.CountingDoc " > - < 参数 名称 =" countingID " 类型 =" Edm.String " 模式 =" " > - < 文献资料 > < 摘要 /> < 详细描述 > 值

- < 参数 名称 =" 财政年度 " 类型 =" Edm.String " 模式 =" " > - < 文献资料 > < 摘要 /> < 详细描述 > 值

谢谢。

致谢

史蒂芬

(60.7 kB)
付费偷看设置
发送
3条回答
骆驼绵羊
1楼 · 2020-08-20 13:10.采纳回答

您好,史蒂芬,

在REST客户端中进行检查

1。 对于POST,您不必通过/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList

2传递任何值。 添加CSRF令牌

3。 在正文中传递值

{

" docId":" 300000314",

" fiscalYear":" 2013"​​

}

致谢

阿伦

N-Moskvin
2楼-- · 2020-08-20 13:19

感谢阿伦。 我搜索了很多张贴方法。

但是您的答案是完美的。

CPLASF-自律
3楼-- · 2020-08-20 13:25

嗨,史蒂芬

这个问题经常被问到!

您正尝试发布到查询中 ,则只能发布到单个实体。

例如

/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList('100000001)

不是

/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList?docId ='300000314'&fiscalYear ='2013'

干杯

JSP

一周热门 更多>