SAP调用HTTP和HTTPS

2023-11-13

HTTPS

https://archive.sap.com/discussions/thread/482084

Note 510007

 

 SAP Kernel版本为721     SAP ECC 6.0     SAP_BASIS700

调用公司的https还是不行     500 Native SSL error   不行

调用https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=132*********

REPORT ZTEST040.


  DATA: LV_URL TYPE STRING,
        HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT,
        RETURN_STR TYPE STRING,
        LV_START TYPE I,
        LV_END TYPE I,
        LV_PARAM TYPE STRING,
        LV_BODY TYPE STRING,
        LV_LEN TYPE I .
  data: L_PHONE(20),
        L_STR TYPE STRING,
        str_in type STRING,
        str_out type STRING.
  data: wf_proxy type string ,
        wf_port type string .





  "HTTP
  str_in = '你猜'.
 "在abap中调用url时,先要对url中的汉字转码ASCII
  CALL METHOD cl_http_utility=>escape_url
        EXPORTING
          unescaped = str_in
        RECEIVING
          escaped   = str_out.

  CONCATENATE '/weather_mini?city=' str_out INTO LV_PARAM.


  call method cl_http_client=>create
    exporting
      host          = 'wthrcdn.etouch.cn'
      service       = '80'
      scheme        = '1'                        "http
      proxy_host    = wf_proxy
      proxy_service = wf_port
    importing
      client        = http_client.

  HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED .

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'GET'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~server_protocol'
      VALUE = 'HTTP/1.1'.
  "host后的url
  call method http_client->request->set_header_field
    exporting
      name  = '~request_uri'
      value = LV_PARAM.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
      VALUE = 'application/json'.

*  "set body
*  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
*    EXPORTING
*      DATA   = LV_PARAM
*      OFFSET = 0
*      LENGTH = LV_LEN.

*  "get the param of url----没用
*  clear LV_PARAM.
*  CALL METHOD HTTP_CLIENT->REQUEST->GET_URI_PARAMETER
*    EXPORTING
*      NAME  = 'city'
*    RECEIVING
*      VALUE = LV_PARAM.

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

* 获取返回的数据
  RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  if RETURN_STR is INITIAL.
    write: /'用cl_http_client=>create方法:' ,/ 'faild'.
  else.
    write: /'用cl_http_client=>create方法:' ,/ RETURN_STR.
  endif.
  CALL METHOD HTTP_CLIENT->CLOSE.






  CONCATENATE 'http://wthrcdn.etouch.cn/weather_mini'
              '?'
              'city=' str_out INTO LV_URL.

"URL填全部,带参数
  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL    = LV_URL
    IMPORTING
      CLIENT = HTTP_CLIENT.

  HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED .

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'GET'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~server_protocol'
      VALUE = 'HTTP/1.1'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
      VALUE = 'application/json'. " text/html 看情况填

*  "set body
*  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
*    EXPORTING
*      DATA   = LV_PARAM
*      OFFSET = 0
*      LENGTH = LV_LEN.

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

* 获取返回的数据
  RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  if RETURN_STR is INITIAL.
    write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ 'faild'.
  else.
    write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ RETURN_STR.
  endif.
  CALL METHOD HTTP_CLIENT->CLOSE.



  call method cl_http_client=>create
    exporting
      host          = 'www.baifubao.com'
      service       = '443'
      scheme        = '2'                        "https
      SSL_ID        = 'ANONYM'
      proxy_host    = wf_proxy
      proxy_service = wf_port
    importing
      client        = http_client.

  HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED .

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'GET'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
*      NAME  = '~server_protocol'
      name  = '~request_protocol'
      VALUE = 'HTTPS/1.1'.
  "host后的url
  call method http_client->request->set_header_field
    exporting
      name  = '~request_uri'
      value = '/callback?cmd=1059&callback=phone&amp&phone=13205334302'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
*      VALUE = 'application/x-www-form-urlencoded'.
      VALUE = 'application/json'.


*  "set body
*  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
*    EXPORTING
*      DATA   = LV_BODY
*      OFFSET = 0
*      LENGTH = LV_LEN.

*  "get the param of url----没用
*  clear LV_PARAM.
*  CALL METHOD HTTP_CLIENT->REQUEST->GET_URI_PARAMETER
*    EXPORTING
*      NAME  = 'city'
*    RECEIVING
*      VALUE = LV_PARAM.

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

* 获取返回的数据
  RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  if RETURN_STR is INITIAL.
    write: /'HTTPS:' ,/ 'faild'.
  else.
    write: /'HTTPS:' ,/ RETURN_STR.
  endif.
  CALL METHOD HTTP_CLIENT->CLOSE.

 

转载于:https://www.cnblogs.com/CtrlS/p/10218438.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAP调用HTTP和HTTPS 的相关文章

  • 存储过程与控制结构

    存储过程与函数的区别 存储过程是没有返回值的函数 函数是有返回值的存储过程 创建存储过程 delimiter create procedure procedureName begin sql 语句 end delimiter 查看已有存储过
  • VUE.js

    VUE 1 1 概述 Vue 是一套前端框架 免除原生JavaScript中的DOM操作 简化书写 之前也学习过后端的框架 Mybatis Mybatis 是用来简化 jdbc 代码编写的 而 VUE 是前端的框架 是用来简化 JavaSc
  • STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

    目录 1 简介 2 CubeMX初始化配置 2 1 基础配置 2 1 1 SYS配置 2 1 2 RCC配置 2 2 屏幕引脚配置 2 3 项目生成 3 KEIL端程序整合 3 1 LCD驱动添加 3 2 函数修改 3 2 1 lcd h修
  • pyqt5_tools下找不到designer.exe的问题

    pyqt tools 5 15 版本 designer exe在路径 Lib site packages qt5 applications Qt bin下
  • 第11讲:vue脚手架集成ElementUI

    一 创建vue路由项目并添加ElementUI支持 ElementUI官方网站 ElementUI组件 创建路由项目请参考 路由开发 使用如下命令集成ElementUI npm i element ui S 在src main js文件中引
  • MySQL日期函数

    MySQL日期函数 1 adddate 语法 adddate date interval expr unit 或 adddate expr days 用于给时间类型增加时间间隔 默认为天 unit year month day day ho
  • STM32 USB CDC VPC

    STM32 USB CDC VPC 关键字 STM32 STM32CubeMX HAL库 USB 虚拟串口 串口不定长接收 1 简介 通过使用stm32cubemx 实现USB CDC虚拟串口 并与硬件串口进行数据传输 实现了硬件串口数据的
  • 手机怎么访问服务器未响应,手机设置路由器服务器未响应怎么办

    手机设置路由器服务器未响应怎么办 内容精选 换一换 自定义线路解析 支持DNS根据访问者的IP地址返回特定的IP地址 如果访问者所属Local DNS不支持扩展DNS机制 Extension Mechanisms for DNS EDNS
  • 将数组作为参数进行传递(转)

    有两种传递方法 一种是function int a 另一种是function int a 这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值 对于第一种 根据之前所学 形参是实参的一份拷贝 是局部变量 但是数组是个例外 因为数组的
  • MySQL5.7_空间数据操作

    MySQL5 7 空间数据操作 创建数据库 空间数据库 spatialDB进行测试 USE spatialDB DROP TABLE t point CREATE TABLE t point id int 11 NOT NULL AUTO
  • 论文阅读笔记(四十七):Attention Is All You Need

    Abstract The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that
  • 将python程序文件隐藏源码(windows下转换成.pyd)

    将编写好的Python程序给别人调用 隐藏源码步骤 1 安装Cython库 pip install Cython 2 新建一个转换程序Change py 内容如下 import Cython Build import distutils c
  • 【深入QT】信号槽机制浅析

    一 信号槽的基本概念 关于QT信号槽的基本概念大家都懂 通过信号槽机制 QT使对象间的通信变得非常简单 A对象声明信号 signal B对象实现与之参数相匹配的槽 slot 通过调用connect进行连接 合适的时机A对象使用emit把信号
  • 【PHP代码审计】ThinkPHP代码审计

    目录 0x001 开发方式 0x002 审计流程 1 启用调试开关 2 版本查看 3 定位函数 4 测试是否存在漏洞 5 版本自身漏洞 0x001 开发方式 在审计源码时根据不同的开发方式对应不同的审计方法 自写 有的站点虽然使用了thin
  • 数组对象and字符串对象

    一 数组对象 JavaScript中的数组对象可以使用new Array 或字面量 来创建 在创建以后 就可以调用数组对象提供的一些方法来实现对数组的操作 1 1数组类型检测 数组类型检测有两种常用的方式 分别是使用 instanceof
  • source insight 绿色护眼主题&暗色护眼主题

    效果如下 绿色背景颜色为RGB 195 222 204 主题下载地址 链接 https pan baidu com s 1aSkQOo70nr498hf wHN4Jw 提取码 f3f6 来自百度网盘超级会员V5的分享
  • CollapsingToolbarLayout用法详解(简洁易懂)

    Collapsing翻译过来就是折叠的意思 CollapsingToolbarLayout 顾名思义就是可折叠的toolbar布局 先看一下使用它的效果 可以看到有这样几个效果 1 背景图片渐渐消失变为主题颜色 2 FloatingActi
  • stata学习笔记

    如何认识数据 S1 打开数据 首先 打开stata 你会看到这样的一个界面 面对全英文的界面 需要知道每一块位置代表着什么 方便以后的操作 中下 Command 命令窗口 你可以在此窗口输入想要执行的stata命令 左上 Review 历史
  • 我的第一个Spring程序

    转自 我的第一个Spring程序 下文是笔者创建第一个Spring示例的方法分享 如下所示 步骤一 使用Eclispe创建一个Java项目 在 Eclipse 中创建一个简单的 Java 项目 依次单击 File gt New gt Jav
  • Python:运营自媒体,如何修改图片的MD5值

    目录 前言 获取所有图片 更改图片MD5值 生成exe可执行文件操作 主界面 线程代码 进度条代码 前言 在我们运营自媒体的时候 或多或少会用到别人的图片 但是某些自媒体平台会判断图片的MD5 如果MD5相同 会认为你抄袭 默认会降低你的权

随机推荐

  • 静态链接与动态链接

    文章目录 静态链接 动态链接 说起静态链接和动态链接 大家肯定都不陌生 静态链接与动态链接的差别顾名思义 动态链接使动态库中的函数在程序运行后 才被用到 而静态链接则在运行前 就将所需函数合并了 我们来看看两者在 Linux 下的定义 静态
  • 单片机毕设 基于物联网的智能衣柜系统设计

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 系统设计 3 1 硬件系部分 3 2 软件部分 3 1 系统架构 3 2 硬件设计 3 3 软件设计 主程序介绍 按键扫描程序设计流程 DHT11 读取程序流程图 LCD12864
  • 使用python搭建一个简易的Web服务

    介绍 简单的说 web服务器就是机器上监听了本地的IP和端口的一个进程 当有客户的请求进来时 它会响应客户的请求并返回相应的信息 客户端和服务端之间的通信基于HTTP协议 客户端可以是浏览器或者任何支持HTTP的应用 我们平时访问网页或手机
  • 2021-06-29 ffmpeg临时记录

    我们将 H264 和 AAC 码流存储为MP4文件的时候 就需要在 MP4文件中增加两个流通道 一个存储Video H264 一个存储Audio AAC 假设H264和AAC只包含单个流通道 avformat new stream 即在 A
  • 21. 实战:多线程+xpath抓取大量菜价信息(四种方法)

    目录 前言 目的 思路 代码实现 多线程 xpath 1 抓取单个页面 2 创建线程池 3 保存到文件 运行效果 完整代码 举一反三 多进程 xpath 多线程 bs4 多进程 bs4 总结 前言 我们学习了多线程 多进程对于提高效率的方法
  • Qt 的一些心得(背景设置,圆角,半透明)

    一 背景刷成黑色 前景色设为白色 方法一 paltette方式 经测试 该方法不会影响到其他控件 推荐使用 QPalette bgpal palette bgpal setColor QPalette Background QColor 0
  • SpringBoot课程笔记

    黑马程序员SpringBoot2课程笔记 一 基础篇 略 二 运维实用篇 1 SpringBoot运行与部署 略 2 SpringBoot配置 2 1 临时属性配置 可以在启动Boot程序时添加临时属性改变配置 2 1 1 属性加载优先级
  • java 静态类的实例_java中类的静态成员和实例成员

    一 基本介绍 java中的静态成员包括静态方法和静态成员变量 静态成员都是由static修饰的 java中的实例成员包括实例方法和实例成员变量 实例成员都没有被static修饰 二 使用语法 关于使用静态成员和实例成员的具体语法规则如下 p
  • 关于指针运算的一道题

    目录 刚看到这道题的时候我也和大多数小白一样感到无从下手 但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解 所以我就想着趁热打铁 写一篇博客来记录一下我的想法 题目如下 画图 逐一解答 题一 cpp cpp 1 c 2 POINT
  • 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/

    导读 谈到苹果 大家应该都不陌生 有人问忘记手机密码了怎么办 另外 还有朋友想问oppo忘记图案解锁怎么办 这到底怎么回事呢 其实锁屏密码是四位数密码呢 下面是小编精心为你们整理的忘记苹果锁屏密码10秒解决 欢迎大家一起来阅读 忘记苹果锁屏
  • Android 获取当前应用的版本号和当前系统的版本号

    1 获取当前程序版本名 我们可以在AndroidManifest xml中设置程序的版本号等 如android versionName 1 0 那如果想在代码中获取这个版本号呢 可以用如下方法 这些修改版本号时只需要修改AndroidMan
  • 离线安装mariadb

    离线安装mariadb 文章目录 离线安装mariadb 一 下载Rpm包 二 按顺序安装依赖 galera安装 安装mariadb相关 三 安全配置 四 配置权限 五 通过navicat测试 一 下载Rpm包 前往MariaDB官网选择所
  • 如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文?

    http www zhihu com question 22790506 answer 81787300 f3fb8ead20 ea27429f8cbe31fd9183a68ccb41caa7 from timeline isappinst
  • uni——传参出现问题[object Object],[object Object]

    案例说明 后台需要的参数样式 goods lists good id 5 num 11 good id 9 num 3 good id 10 num 34 按照此格式传参发现 解决办法 出现 object Object 的原因通常是因为在将
  • linux 端口转发 udp,Linux Socat TCP/UDP端口转发及使用

    socat是不支持端口段转发 只适用于单端口或者少量端口 如果需要大量端口考虑使用 iptables 或 haproxy haproxy 只能转发TCP Socat安装 Centos 系统 yum install y socat Debia
  • 2023新能源汽车行业薪酬报告

    导读 数据表明 虽然受疫情封控等多重不利因素影响 但新能源汽车产业依然活力强劲 2022年 新能源汽车产销数据分别为 705 8 万辆和 688 7 万辆 同比增长分别为 96 9 和 93 4 连续 8 年保持全球第一 此外 新能源汽车市
  • C语言考试题目(一)

    一 单项选择题 本大题共25小题 每题2分 共50分 1 C语言的源程序通常的扩展名是 A cpp B obj C exe D c 2 下列选项中 属于多行注释 A B C D 3 以下不合法的字符常量是 A ab B 2 C A D n
  • bootstrap 框架学习笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt http getbootstrap com 在这个上面下载bootstrap 为什么使用 Bootstrap 移动设备优先 自 Bootstrap 3 起 框架包含了贯穿于
  • Linux下SUDO出现Unable to resolve host XXX解决方法

    转载 Ubuntu环境 假设这台机器名字叫abc 机器的hostname 每次执行sudo 就出现这个警告讯息 sudo unable to resolve host abc 虽然sudo 还是可以正常执行 但是警告讯息每次都出来 而这只是
  • SAP调用HTTP和HTTPS

    HTTPS https archive sap com discussions thread 482084 Note 510007 SAP Kernel版本为721 SAP ECC 6 0 SAP BASIS700 调用公司的https还是