SAPUI5:使用getHeaders()未检索到sap-message

时间:2014-12-17 15:46:42

标签: odata sapui5

我使用将来自SAP Gateway Service的消息映射到OData请求响应的标头的功能。这允许我在客户端接收来自后端的消息,直接在名为SAP-message的http-header

不幸的是,虽然我可以在Chrome Dev Tools的Odata响应的响应头中看到SAP-message标头,但是当使用OData Model类的getHeaders方法时,不会返回此特定标头

以下是我使用的代码:

oModel.create("/PurchaseContractHeaderCollection", mPayload, {
    async : true,
    success : jQuery.proxy(function(mResponse) {
        // get headers
        var mHeaders = this.oModel.getHeaders();
        // SAP-message is not mapped in the headers of the OData model

因此,mHeaders不包含任何SAP消息对象

以下是Chrome开发工具中可见的响应标头内容:

content-length:705
content-type:application/json; charset=iso-8859-1
dataserviceversion:2.0
location:http://<server>.<domain>/PurchaseContractHeaderCollection('xxxxxx')
sap-message:{
    "code":"ME/887",
    "message":"Erreur lors de la reprise des données ExtensionIn pour l'extension",
    "severity":"warning","target":"",
    "details":[
        {"code":"BAPI/000","message":"Exception","target":"","severity":"info"},
        {"code":"06/017","message":" créé(e)","target":"","severity":"info"}
    ]}
server:SAP NetWeaver Application Server / ABAP 731

关于问题所在的任何想法?

1 个答案:

答案 0 :(得分:2)

我从SAP那里得到了答案:

ODataModel.getHeaders函数仅用于访问事先由应用程序设置的请求标头和ODataModel本身 - 您无法通过此函数访问响应标头

请改用以下代码:

oDataModel.create(...
    {success: function (oData, oResponse) {
        // access response headers here: oResponse.headers
        ...
}});