编写本文档的动机是,在处理HTTP 401未授权错误(详细说明见本文档)时,我想了解更多有关SAP标准登录过程的信息。
使用tcode SICF,导航到icf节点,大数据分析技术,在过程字段中单击F1,我们可以找到标准登录顺序的文档。
登录顺序登录签入标准登录过程在SAP帮助中定义:
因此我想使用这些登录命令。
WSDL URL是::50078/SAP/bc/srt/WSDL/flv_10002A111AD1/bndg_URL/SAP/bc/srt/rfc/SAP/zws_add/506/zjerry1/jerry1?sap client=506
将其粘贴到浏览器地址栏并按enter键后,我可以看到预期的WSDL内容。不过,我在HTTP watch中观察到HTTP 307重定向,浏览器中的最终url也自动更改为https。
此重定向行为是在参数中定义的,这些参数可以在tcode SMICM
或RZ11 use parameter name icm/HTTP/redirect\ u 0:
在这种情况下,物联网智能水表,云从,我没有指定任何用户和密码,但仍然可以获得WSDL内容。根据SAP帮助"使用SAP登录票证登录(MYSAPSSO2 cookie字段)"。如果没有登录数据作为表单字段或标题字段传输,则系统将尝试使用登录票证登录。要启用此功能,关于云服务器,必须设置cookie字段mysaps2。"
我可以通过HTTP watch在客户端观察此登录票证的使用情况:
如果我通过"工具->互联网设置->内容->证书"在浏览器设置中禁用我的证书,然后在浏览器中重新启动WSDL url:
这次我在HTTP watch中观察到401个未经授权的错误,伴随着一个询问用户和密码的弹出窗口
在我输入了我的用户和密码之后,我可以看到WSDL内容(http响应代码:200)。
这次我可以看到授权方法更改为"Basic d2FuZ2plcjpTYXAxMjM0NQ==",大数据学什么,
字符串"d2fux2plcjptyxaxmjm0nq=="是我输入的用户名和密码与":"串联后的Base64编码结果:"
我列出了以下关于通过ABAP代码访问外部WSDL url的场景。有些可能不用于生产使用,只是用于研究和验证目的。
变体a:代码中没有指定凭据
执行以下小代码:
一旦执行,会出现预期的弹出窗口,因为我在代码中没有指定任何凭据:
输入正确的用户和密码后,代码可以成功返回WSDL。
变量b:在代码中禁用弹出窗口
可以通过代码lo\u http\u client->propertytype\u logon\u popup=if\u http\u client=>co\u disabled来抑制弹出窗口行为。在调用send方法之前必须添加新行。
执行结果:没有弹出窗口,调用lou http\u client->response->get\u cdata()返回如下错误html页:
变量c:添加支持基本身份验证的代码
在lou http\u client->send()之前添加以下代码:
并按预期返回WSDL内容:
变量d:通过http目的地而不是url初始化http客户端
创建httptcode SM59中的destination:
维护登录所需的用户名和密码:
然后使用方法create \u by \u destination初始化http客户端实例。这样就不需要在ABAP代码中指定任何凭证,
变量e:直接在url中追加用户和密码
变量f:通过SAP登录票证登录
将HTTP watch中Cookie字段MYSAPOSS2的值复制到ABAP代码中: