如何使用C#消耗HANA服务层调用GET CompanyService_GetAdminInfo?

2020-09-22 13:07发布

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

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


嗨,

我们最近开始使用C#中的HANA服务层调用进行开发。 我们找到了以下网站 https://blogs.sap.com/2015/07/15/how-to-consume-service-layer-odata-services-from-net-via-wcf/,并使用 示例代码以开始我们自己的项目。

一切顺利,直到我们需要检索公司信息为止。

//此调用没有问题
 var uri = new Uri(BaseUrl + @" VatGroups('A2')");
 var vatGroup = serviceLayer.Execute (uri," GET",true).SingleOrDefault();

//此调用产生错误
 uri =新的Uri(BaseUrl +" CompanyService_GetAdminInfo");
 var admin = serviceLayer.Execute (uri," POST",true).SingleOrDefault(); 

我们收到以下错误:
响应有效载荷不是有效的响应有效载荷。 请确保顶级元素是有效的Atom或JSON元素或属于' http://schemas.microsoft.com/ado/2007/08/dataservices '名称空间。

当我使用邮递员进行相同的呼叫时,没有问题!?

正如您在上述URL上看到的那样,我已经在那里询问过,并且我已经得到建议将我的代码更改为(她使用了更多代码,但这应该是相同的):

 var uri =新的Uri(BaseUrl +" CompanyService_GetAdminInfo");
 BodyOperationParameter [] body = null;
 var admin =(AdminInfo)serviceLayer.Execute (uri," POST",true,body).SingleOrDefault();
 

不幸的是,这并没有解决问题...

有人知道为什么我在某些电话上会收到此错误以及如何使其正常工作吗?

我正在使用SAP 9.2 PL 08和Visual Studio 2015。

我想上传我的项目,但似乎不可能,因此我将上传控制台应用程序的源代码(Program.cs => program.txt )。

您将必须添加一个链接到" https://<您的服务器ip>:50000/b1s/v1/$ metadata"的"服务参考"(不要忘记首先在(for (例如邮递员),并且很可能必须添加一些参考。 您还必须更改顶部的某些const值...

如果需要更多信息,请询问...

以诚挚的问候,

Ruben Pol

program.txt (8.3 kB)

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

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


嗨,

我们最近开始使用C#中的HANA服务层调用进行开发。 我们找到了以下网站 https://blogs.sap.com/2015/07/15/how-to-consume-service-layer-odata-services-from-net-via-wcf/,并使用 示例代码以开始我们自己的项目。

一切顺利,直到我们需要检索公司信息为止。

//此调用没有问题
 var uri = new Uri(BaseUrl + @" VatGroups('A2')");
 var vatGroup = serviceLayer.Execute (uri," GET",true).SingleOrDefault();

//此调用产生错误
 uri =新的Uri(BaseUrl +" CompanyService_GetAdminInfo");
 var admin = serviceLayer.Execute (uri," POST",true).SingleOrDefault(); 

我们收到以下错误:
响应有效载荷不是有效的响应有效载荷。 请确保顶级元素是有效的Atom或JSON元素或属于' http://schemas.microsoft.com/ado/2007/08/dataservices '名称空间。

当我使用邮递员进行相同的呼叫时,没有问题!?

正如您在上述URL上看到的那样,我已经在那里询问过,并且我已经得到建议将我的代码更改为(她使用了更多代码,但这应该是相同的):

 var uri =新的Uri(BaseUrl +" CompanyService_GetAdminInfo");
 BodyOperationParameter [] body = null;
 var admin =(AdminInfo)serviceLayer.Execute (uri," POST",true,body).SingleOrDefault();
 

不幸的是,这并没有解决问题...

有人知道为什么我在某些电话上会收到此错误以及如何使其正常工作吗?

我正在使用SAP 9.2 PL 08和Visual Studio 2015。

我想上传我的项目,但似乎不可能,因此我将上传控制台应用程序的源代码(Program.cs => program.txt )。

您将必须添加一个链接到" https://<您的服务器ip>:50000/b1s/v1/$ metadata"的"服务参考"(不要忘记首先在(for (例如邮递员),并且很可能必须添加一些参考。 您还必须更改顶部的某些const值...

如果需要更多信息,请询问...

以诚挚的问候,

Ruben Pol

program.txt (8.3 kB)
付费偷看设置
发送
4条回答
hongfeng1314
1楼 · 2020-09-22 13:27.采纳回答

鲁宾,

我们的开发团队正在调查该问题。

好像WCF希望服务层返回类似的内容:
{
" odata.metadata":" http://10.58.136.174:9080/b1s/v1/$metadata#SAPB1.CompanyInfo",< br>"版本":930130,
" EnableExpensesManagement":" tNO",
" EnableAccountSegmentation":" tYES",
" EnableBillOfExchange":" tNO",
" BaseDateForExchangeRate":" bdr_PostingDate ",
" BISRBankActKey":null,
" BISRBankCountry":null,
....
}

但是目前," odata.metadata":" http://10.58.136.174:9080/b1s/v1/$metadata#SAPB1.CompanyInfo"丢失。

应该在即将发布的补丁中修复,我会及时通知您。

致谢,
特立尼达。

骆驼绵羊
2楼-- · 2020-09-22 13:30

嗨,Trinindad,

我们遇到了同样的问题。 这个已经在补丁中解决了吗?

谢谢

伊曼纽尔

Doze时光
3楼-- · 2020-09-22 13:26

嗨鲁本,

我已经在环境中进行了测试,也可以复制它。

我记得(如果我没记错的话)在WCF示例项目中让CompanyService_GetCompanyInfo正常运行,但现在我不能。

我已检查并正确将请求发送到服务层,.NET正确接收到响应200 OK。 问题在于.NET在尝试提取响应时抛出异常。

我已经将该服务与可以在WCF上正常运行的Login服务进行了比较,并且我注意到Login服务的响应是B1Session EntityType

  
     
   
   
   
     

当CompanyService_GetCompanyInfo返回ComanyInfo ComplexType时

 
   
   
   
 ... 

我现在正试图找出ComplexType为什么使用.NET WCF创建此类问题的原因...

致谢,
特立尼达。

Aaron 3364
4楼-- · 2020-09-22 13:31

嗨,特立尼达,

感谢到目前为止的研究...我很高兴听到您至少可以重现我的问题。 希望很快它将按预期运行...

以诚挚的问候,

Ruben Pol

一周热门 更多>