使用iOS的SAP云平台的代理类错误地调用OData服务。

2020-08-31 16:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) let provider = ...

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

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


let provider = OnlineODataProvider(serviceName:" API_OUTBOUND_DELIVERY_SRV",serviceRoot:" https://my300942-api.s4hana.ondemand.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV /")

//APIOUTBOUNDDELIVERYSRVEntities是代理生成的类的一部分

let service = APIOUTBOUNDDELIVERYSRVEntities(提供者:提供者)

{

让data2 =尝试service.fetchAOutbDeliveryHeader()

打印(数据2)

}

抓住

{

打印(error.localizedDescription)

}

以下是错误消息:

使用DataServiceVersion 2.0的预期响应,找不到标头! 可以通过设置serviceOptions.checkVersion = false来禁用此错误。 但是首先,应检查提供商URL,以防该客户端意外地使用错误的服务版本进行通信。

2条回答
My梦
2020-08-31 17:46 .采纳回答

Venkat A 该错误消息为您指明了正确的方向:

 service.serviceOptions.checkVersion = false 
//然后发送请求

如果您在组件MOB-SDK-ODC上提交中优先级票证(具有上面的链接)以及测试用户凭证,这将很有用。 后端服务各自具有自己的特质,有时并不完全符合OData规范。 我们尝试适当地解决这些问题,但这有助于检查是否需要新的测试用例。

我在这里使用了公开可用的API_OUTBOUND_DELIVERY_SRV: https://api.sap.com/api/API_OUTBOUND_DELIVERY_SRV_0002/resource,并使用助手生成了一个应用。 有趣的是,我得到了不同的结果。 只要包含$ top参数,我的传递标题响应就可以了。 否则,服务器超时。

此代码在CollectionsViewController.swift中有效:

 func fetchAOutbDeliveryHeader(_completeHandler:@escaping([AOutbDeliveryHeaderType] ?,错误?)->无效){
let service = apioutbounddeliverysrvEntities
//仅请求前n个值。 //如果要修改请求的实体,可以在此处进行。
let query = DataQuery()。selectAll()。top(100)
做{ service.serviceOptions.checkVersion = false
let data2 =试试service.fetchAOutbDeliveryHeader(匹配:查询)
print(data2)
complementHandler(data2,nil)
}捕获{
print(error.localizedDescription)
completedHandler(nil,error)
}
}

但是,我确实看到 api.sap.com 版本不允许直接在实体上进行GET操作 为地址,合作伙伴,HeaderText,DocFlow,ItemText,ItemObject或NmbrDelivery设置。 这可能告诉我它们可能是作为子级或链接访问的。

一周热门 更多>