使用ABAP程序调用URL(方法POST)

2020-09-01 15:53发布

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

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


大家好,

我需要调用一个网址,例如" www.google.com ?q = 你好"和ABAP一起使用POST方法。

类似于FM" Call_Browser",但我的变量q = hello需要通过POST方法传递。

有什么想法吗?

谢谢。

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

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


大家好,

我需要调用一个网址,例如" www.google.com ?q = 你好"和ABAP一起使用POST方法。

类似于FM" Call_Browser",但我的变量q = hello需要通过POST方法传递。

有什么想法吗?

谢谢。

付费偷看设置
发送
10条回答
半个程序猿
1楼-- · 2020-09-01 16:45

大家好,

我知道这是一个非常老的帖子,但是我需要做完全一样的事情(打开一个url并通过post方法发送参数),并且在其他任何帖子中都找不到其他有用的答案... url 最后一个答案中提到的功能不再起作用,是否有可能获取更新的URL或让我知道如何访问此信息?

还是有人发现了其他方法?

非常感谢。

关于

Xavi。

南山jay
2楼-- · 2020-09-01 16:48

您好,我一直在寻找答案,最后得到了答案。 请参阅此链接

https://wiki.scn.sap.com/wiki/x/GQx2Gg

我希望这会有所帮助。

致谢

卡洛斯·安德烈斯·冈萨雷斯

愤怒的猪头君
3楼-- · 2020-09-01 16:38

嗨哈维。

在下面附加示例代码以打开url并通过post方法发送参数,以检查是否有帮助。

参数:p_url(240)C型小写默认值' https ://community.sap.co m/&user =(2)&password =(3)"。 "仅用于信息目的

*在STRUST T代码中上传证书
*在SM59中配置并使用
*此处SSL ID('SSL_TEST'),对于某些URL,则不需要
参数:p_ssl TYPE ssfapplssl小写默认'SSL_TEST'。 " SSL ID
参数:p_usrath AS CHECKBOX DEFAULT"。 用户身份验证
参数:p_userx(30)TYPE C小写字母默认值''。" HTTP用户
参数:p_pwd(30)TYPE C LOWER CASE DEFAULT"。
参数:p_prxy TYPE char1 AS CHECKBOX DEFAULT "。"代理身份验证
参数:p_sprt类型char1 RADIOBUTTON GROUP g1,"服务器协议
p_rprt类型char1 RADIOBUTTON GROUP g1 DEFAULT'X'。"请求协议



数据:客户端类型引用到if_http_client,
lv_subrc类型sy-subrc,
e_msg类型字符串。
lv_hdr TYPE字符串,
lv_url TYPE字符串。

CLEAR:lv_ssl,lv_url,lv_user,lv_pwd。

"由于以下方法仅接受字符串

lv_ssl = p_ssl。
lv_user = p_userx。
lv_pwd = p_pwd。
lv_url = p_url。

调用方法cl_http_client => create_by_url
导出
url = lv_url
* proxy_host = p_host
* proxy_service = p_srv
ssl_id = lv_ssl
导入
client = client
例外情况
arguments_not_found = 1
plugin_not_active = 2
内部错误= 3
其他=4。


IF sy-subrc <>0。
调用方法客户端- > get_last_error
导入
代码= lv_subrc
消息= e_msg。
消息e_msg类型'E'。
ENDIF。

IF p_usrath ='X'。
* Aunthenticate HTTP CLIENT通常,当未在URL中提供用户名和密码作为声明中的默认值时
呼叫方法client-> authenticate
EXPORTING
proxy_authentication = p_prxy
username = lv_user
密码= lv_pwd
语言= sy-langu。
ENDIF。


*标头信息
呼叫方法客户端-> request-> set_header_field
导出
>名称='〜request_method'
值='POST'。

IF p_sprt EQ abap_true。
lv_hdr ='〜server_protocol'。
ELSE。
lv_hdr ='〜request_protocol '。
ENDIF。
调用方法客户端->请求-> set_header_field
导出
名称= lv_hdr
值='HTTP/1.1'。

调用方法c lient-> request-> set_header_field
导出
name ='Content-Type'
value ='text/xml'。

此致

Pallavi Andole

CJones
4楼-- · 2020-09-01 16:44

嗨,Medhi,

您找到解决方案了吗??? 我正在尝试做同样的事情。

帮助..!

一周热门 更多>