SAP 调取http的x-www-form-urlencoded形式的接口

2023-11-21 22:36

本文主要是介绍SAP 调取http的x-www-form-urlencoded形式的接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、了解下x-www-form-urlencoded形式对于SAP来说有啥区别
在这里插入图片描述
简单来说,
1.raw格式就是标准的json格式:{“Name”:“John Smith”,“Age”: 23}
2.x-www格式是要转化一下的:Name=John+Smith&Age=23
字段与字段相互连接要用 & 符号,空格用 + 连接。所以说当你的关键参数里面带有这些特殊符号时,就要用方法转化一下。

二、具体实例。
先使用Postman跑一下,ok没有问题,可以通畅。关键信息按照你的接口来,我的接口信息上马了。
在这里插入图片描述
然后写ABAP代码:

DATA: len         TYPE        i, "发送报文长度len_string  TYPE        string,url         TYPE        string, "接口地址http_client TYPE REF TO if_http_client, "http客户端post_string TYPE        string,result      TYPE        string.
DATA: it_header  TYPE tihttpnvp,gv_json_in TYPE string VALUE '' .START-OF-SELECTION." url = 'https://api.map.baidu.com/weather/v1/?district_id=222405&data_type=all&ak=cvqVbWx3ruVm63LqMbuW43K3oqNOodBT'.url = 'http://这是个具体的网址,你需要粘贴上你的网址token'.cl_http_client=>create_by_url(EXPORTING url = url    "服务提供方服务地址IMPORTING client  =  DATA(lo_client))."调取方式:get 或者为 postlo_client->request->set_method( if_http_request=>co_request_method_post )." lo_client->request->set_method( if_http_request=>co_request_method_get )."设置抬头字段CALL METHOD lo_client->request->set_header_fieldEXPORTINGname  = 'Content-Type'value = 'application/x-www-form-urlencoded'.  "为这种形式的,需要设置抬头格式"返回格式。为json的lo_client->response->if_http_entity~set_content_type( content_type = 'application/json' ).*lo_client->response->get_header_field( name = 'x-csrf-token' ).
*lo_client->response->get_cookies( CHANGING cookies = lt_cookies ).DATA:lv_username TYPE string.DATA:lv_password TYPE string."为这种x-www-form-urlencoded形式的,需要把变量全部转译一下,比如&符号的lv_username = cl_http_utility=>escape_url( 'cha填写关键信息' ).lv_password = cl_http_utility=>escape_url( 'O0&J人工打码' ).gv_json_in =   'grant_type=password' &&   "固定值'&username=' && lv_username &&'&password=' && lv_password &&'&client_id=crm' .  "固定值DATA(lv_len) = strlen( gv_json_in ).
**  设置post接口body参数lo_client->request->set_cdata( data = gv_json_in  length = lv_len ).**  发送数据lo_client->send("    EXPORTING"       timeout                    = co_timeout_default " Timeout of Answer Waiting TimeEXCEPTIONShttp_communication_failure = 1                  " Communication Errorhttp_invalid_state         = 2                  " Invalid statehttp_processing_failed     = 3                  " Error When Processing Methodhttp_invalid_timeout       = 4                  " Invalid Time EntryOTHERS                     = 5).IF sy-subrc <> 0.result = '接口接受响应失败'.ENDIF.**********************************************************************
**  接收返回参数lo_client->receive(EXCEPTIONShttp_communication_failure = 1                " Communication Errorhttp_invalid_state         = 2                " Invalid statehttp_processing_failed     = 3                " Error When Processing MethodOTHERS                     = 4).IF sy-subrc <> 0.result = '接口接受响应失败'.ENDIF.result = lo_client->response->get_cdata( ).lo_client->close( )."  WRITE: url.WRITE: / result.

DEBUG看下过程,发现&符号是已经转义了
在这里插入图片描述
然后调取成功。

参考资料:
1.https://blog.csdn.net/BinGeneral/article/details/123607105 -斌将军SAP HTTP调用其他系统接口

感谢
同事小何
学习群-派蒙
学习群-fufu可爱捏

分享使我快乐,我是寒武青锋~!
在这里插入图片描述

这篇关于SAP 调取http的x-www-form-urlencoded形式的接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/405572

相关文章

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (