通过服务层添加业务伙伴

2020-09-21 12:46发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我尝试通过服务层在S...

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

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


大家好,

我尝试通过服务层在SAP HANA后端上添加新的业务合作伙伴

我尝试同时使用.Net HttpClient和HttpWebRequest

使用HttpCliend我得到了堆栈跟踪的异常

发送请求时发生错误。
    在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
    在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()处
    在System.Net.Http.HttpClient中。 d__58.MoveNext()

使用HttpWebRequest,我设法连接到服务层,但是在添加新的业务伙伴时,出现连接错误

 ----------------------连接响应----------------------
 {
    " odata.metadata":" https://192.168.1.185:50000/b1s/v1/$metadata#B1Sessions/@Element",
    " SessionId":" fbca8422-3730-11e8-8000-08002740a590",
    " Version":" 920180",
    " SessionTimeout":30
 }


 ----------------------添加业务伙伴----------------------
 远程服务器返回错误:(401)未经授权。

有人可以解释为什么我得到上述结果吗?

最诚挚的问候,

Dimitris Theotokatos

5条回答
奄奄一息的小鱼
2020-09-21 13:38

所以我听从了Miklos的建议,并向服务层发送了以下请求:

1)我添加了B1SESSION = 194903fc-3966-11e8-8000-08002740a590; ROUTEID = .node1作为我的请求的标题为" Cookie"的标题

这是我的请求的示例

 httpWebRequest.Headers.Add(" Cookie"," B1SESSION = 194903fc-3966-11e8-8000-08002740a590; ROUTEID = .node1");
 

我得到的回复是

远程服务器返回错误:(400)错误的请求。

2)我添加了B1SESSION = 194903fc-3966-11e8-8000-08002740a590; ROUTEID = .node1作为Cookie使用:

如果(httpWebRequest.CookieContainer == null)
 {
      httpWebRequest.CookieContainer = new CookieContainer();
 }
 Uri _target = new Uri(Url);

 httpWebRequest.CookieContainer.Add(new Cookie(" B1SESSION"," 194903fc-3966-11e8-8000-08002740a590"){域= _target.Host});
 httpWebRequest.CookieContainer.Add(new Cookie(" ROUTEID"," .node1"){域= _target.Host});
 

我得到的答复是

远程服务器返回错误:(400)错误的请求。

请注意,我将请求设置为

 var httpWebRequest =(HttpWebRequest)WebRequest.Create(Url);
 httpWebRequest.ContentType =" application/json";
 httpWebRequest.Method =" POST";
 httpWebRequest.ServerCertificateValidationCallback + =(发件人,证书,链,sslPolicyErrors)=> true;

 使用(var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
 {
       streamWriter.Write(_json);
       streamWriter.Flush();
       streamWriter.Close();
 }
 var httpResponse =(HttpWebResponse)httpWebRequest.GetResponse();
 

其中Url是我需要调用的服务层位置和实体,而_json是我需要发送的json对象

有人可以建议如何通过登录会话向服务层提出请求吗?

亲切的问候,

Dimitris Theotokatos

一周热门 更多>