• SAP调用HTTP和HTTPS


    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.
  • 相关阅读:
    不同编程语言中获取现在的Unix时间戳
    Zend Studio8.0.0中文汉化教程及入门教程
    Apache+php+mysql在windows下的安装与配置图解
    SQl 跨服务器查询语句和跨数据创建表
    .NET平台依赖注入机制及IoC的设计与实现
    整理基础的CentOS常用命令
    jQuery boxy弹出层插件中文演示及讲解
    VB 冒泡排序
    Windows7下使用IIS7与FastCGI模块配置PHP5.3.1运行环境
    Eclipse快捷键大全(转载)
  • 原文地址:https://www.cnblogs.com/CtrlS/p/10218438.html
Copyright © 2020-2023  润新知