调用 HTTP_POST 时出现 Bad Request 错误?

2024-04-26

我有一个关于 SAP 功能模块“http_post”的问题。 我只想将 SAP 中的一条短消息 (msg) 发布到我之前安装的推送通知服务器 (pushd-Github-Projekt)。现在我不知道如何传递消息。

我用测试符号测试了 FM:

CALL FUNCTION 'HTTP_POST'
  exporting
    ABSOLUTE_URI                =     uri " Uniform Resource Identifier (RFC 1945)
*    REQUEST_ENTITY_BODY_LENGTH  =     14 "request_entity_body_length
*    RFC_DESTINATION             =     " RFC Destination
*    PROXY                       =     " HTTP Proxy Rechner
*    PROXY_USER                  =     " Benutzername auf dem Proxy Rechner
*    PROXY_PASSWORD              =     " Passwort auf dem Proxy Rechner
*    USER                        =     " Benutzername auf dem HTTP Server
*    PASSWORD                    =     " Passwort auf dem HTTP Server
*    BLANKSTOCRLF                =     " Blanks in CRLF konvertieren im Entity Body
*  importing
*    STATUS_CODE                 =     " Statuscode ( 2xx = OK )
*    STATUS_TEXT                 =     " Text zum Statuscode
*    RESPONSE_ENTITY_BODY_LENGTH =     " Länge vom Response-Entity-Body
  tables
    REQUEST_ENTITY_BODY         =    '{"msg":"test"}' "request_entity_body 
    RESPONSE_ENTITY_BODY        =    '' " Response-Entity-Body Daten
    RESPONSE_HEADERS            =    '' " Header Zeilen vom Response
    REQUEST_HEADERS             =    'Content-Type: application/json' "request_headers
*  exceptions
*    CONNECT_FAILED              = 1
*    TIMEOUT                     = 2
*    INTERNAL_ERROR              = 3
*    TCPIP_ERROR                 = 4
*    SYSTEM_FAILURE              = 5
*    COMMUNICATION_FAILURE       = 6
*    OTHERS                      = 7
  .

我知道我的值不是表格,但我使用测试符号对其进行了测试,您可以将值直接写入表格中。 当我启动 FM 时,我收到SAP 中的错误请求错误以及推送通知服务器上的此错误:

SyntaxError: Unexpected token
at Object.parse (native)
at IncomingMessage.<anonymous> ...Path from the pushd..
express\node_modules\connect\lib\middleware\json.js:76:27
at incomingMessage.EventEmitter.emit events.js:92:17
at _stream:readable.js:919:16
at process._tickCallback <node.js:419:13>

谁能帮助我如何将请求传递到 FM HTTP-Post?它必须是……。与 msg,因为否则推送通知服务器无法处理它。


In SAP_BASIS版本 731 或更高版本,我强烈建议使用该类CL_HTTP_CLIENT用于执行 HTTP 请求。请参阅此处有关如何执行此操作的示例报告。更换虚拟字符串http:1.2.3.4:80/testjon/通过您的相关网址。

report z_test_http_post.

start-of-selection.
  perform start.

* ---
form start.

  data: lv_status type i,
        lv_error_occurred type flag,
        lv_error_msg type string,
        lv_response_body type string.

  perform send_json using
    'http://1.2.3.4:80/testjson/'  " Use your URL here
    '{"hello":"world"}'            " Use your JSON here
    changing lv_status lv_response_body
             lv_error_occurred
             lv_error_msg.

* Show result
  format color col_heading.
  write: / 'Response status:', lv_status.
  if lv_error_occurred = 'X'.
    format color col_negative.
    write: / 'Error occurred:', lv_error_msg.
  endif.
  format color col_normal.
  write: / 'Response:', lv_response_body.

endform.                    "start

form send_json using iv_url type string
                     iv_json_data type string
        changing cv_status type i
                 cv_response_body type string
                 cv_error_occurred type flag
                 cv_error_msg type string.


  data: lo_client type ref to if_http_client.

  clear: cv_error_msg,
         cv_status,
         cv_error_occurred,
         cv_error_msg.

  if iv_url is initial.
* No URL passed
    message e349(sbds) into cv_error_msg.
    cv_error_occurred = 'X'.
    return.
  endif.

  call method cl_http_client=>create_by_url
    exporting
      url                = iv_url
    importing
      client             = lo_client
    exceptions
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      others             = 4.
  if sy-subrc ne 0.
    message id sy-msgid type sy-msgty number sy-msgno
      with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
     into cv_error_msg.
    cv_error_occurred = 'X'.
    return.
  endif.

  lo_client->request->set_cdata( iv_json_data ).
  lo_client->request->set_content_type( 'application/json' ).
  lo_client->request->set_method( 'POST' ).
  call method lo_client->send
    exceptions
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      others                     = 4.
  if sy-subrc ne 0.
    lo_client->get_last_error( importing message = cv_error_msg ).
    cv_error_occurred = 'X'.
    return.
  endif.

  lo_client->receive( exceptions others = 1 ).
  if sy-subrc ne 0.
    lo_client->get_last_error( importing message = cv_error_msg ).
    cv_error_occurred = 'X'.
    return.
  endif.

  cv_response_body = lo_client->response->get_cdata( ).
  lo_client->response->get_status( importing code = cv_status ).

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

调用 HTTP_POST 时出现 Bad Request 错误? 的相关文章

  • 向 Google Play Android Developer API 发出 HTTP post 请求

    我正在尝试授权 Google Play Android Developer API 我正处于需要发出 HTTP POST 请求以交换访问令牌和刷新令牌的授权代码的步骤 Google https developers google com a
  • 标准程序的用途列表

    我正在搜索 SAP 表的使用 我想知道桌子在哪里S083用于 SAP 标准程序 我已经搜索过 使用地点 列表 但我只得到了自创程序 没有得到SAP标准程序 有人知道如何在 SAP 标准程序中搜索表使用吗 为了能够使用 SAP 标准编码的使用
  • C# 在默认浏览器中打开网页并发布数据

    我确信之前一定已经回答过这个问题 但我找不到解决方案 所以我想我可能误解了其他人的解决方案或试图做一些愚蠢的事情 但我们开始了 我正在用 C 编写 Outlook 2010 的加载项 用户可以单击功能区中的按钮并将电子邮件内容提交到网站 当
  • 反序列化匿名 JSON 数组?

    我有一个想要反序列化的匿名数组 这里是第一个数组对象的示例 time 08 55 54 date 2016 05 27 timestamp 1464332154807 level 3 message registerResourcePath
  • 从php访问json数据

    我在访问 JSON 数据时遇到问题 我对 JSON 和 jquery 很陌生 所以可能有一个简单的解决方案 我很高兴找到答案 我的 jQuery post currentPage php currentPage 1 function dat
  • 在 iOS 上发送 HTTP POST 请求

    我正在尝试使用我正在开发的 iOS 应用程序发送 HTTP Post 但推送从未到达服务器 尽管我确实收到了代码 200 作为响应 来自 urlconnection 我从未收到服务器的响应 服务器也没有检测到我的帖子 服务器确实检测到来自
  • 自定义二进制数据的 cURL POST(不是表单内容)

    以下代码片段成功发送 POST 请求但未发送 sendStream 中的数据 该流有效且包含数据 这已被验证 的问题 curl setopt request CURLOPT HTTPHEADER array Content type app
  • 如何在Python中将字符串数据转换为JSON对象?

    这是我从其中一项网络服务收到的示例字符串 body 7B 22type 22 3A 22change 22 2C 22url 22 3A 22http 3A 2F 2Fapi pachube com 2Fv2 2Ftriggers 2F41
  • 我可以使用 line_exists 检查初始值或不相等的值吗?

    ABAP 7 40 添加了line exists 谓词函数来分析内表 但我有什么办法可以检查是否存在特定列为初始值或与目标值不同的行 例如 如何检查具有初始材料列的行 例如此表中的第三行 Document Country Material
  • AFNetworking 3 x-www-form-urlencoded 发布数据

    I m trying to post data with x www form urlencoded body Posting via postman it is ok 但我无法通过 afnetworking 3 做到这一点 这是我的代码
  • 在包内的所有程序中搜索 MODIFY 语句

    我想搜索包内所有使用以下语句的程序 从 wa itab xyz 修改 itab xyz 最好使用通配符 如 itab 搜索字符串 对于一系列 itab values 如 itab abc itab def itab ghi ETC 我如何在
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • MVC 中的 HttpPost 与 HttpGet 属性:为什么使用 HttpPost?

    所以我们有 HttpPost 这是一个可选属性 我知道这会限制调用 因此只能通过 HTTP POST 请求进行调用 我的问题是我为什么要这样做 想象一下以下情况 HttpGet public ActionResult Edit int id
  • Asp.net core webapi获取从Angular4应用程序发布的空值

    我是新来的Angular4在快速交付内容的情况下 所以没有时间彻底学习它 所以如果我的问题看起来很幼稚 请原谅 From my Asp Net Web API I have Confirmemail API必须从 Angular4 应用程序
  • 如何在HTTP post中向PHP服务器发送多个参数

    我正在将 base64 字符串发送到 php 服务器 并且运行良好 现在我想以字符串形式发送另一个参数 谁能告诉我下面的代码中需要添加什么代码 下面的代码适用于单个参数 我们如何修改它的多个参数 NSData data UIImageJPE
  • ABAP中的字段符号和数据引用概念

    如果我们将 ABAP 字段符号和数据引用与 C 中的指针进行比较 我们会观察到 在 C 中 假设我们声明一个变量 var 类型为 integer 默认值为 5 变量 var 将存储在内存中的某个位置 并假设保存该变量的内存地址是 1000
  • 如何在 Java Android 中为客户端请求设置 HttpPost 标头

    我无法让 Apache HttpClient 正确发送 HttpPost 标头 我在发送名称值对等方面没有任何问题 但是每当我设置或添加 POST 标头时 它就会在发出请求时消失 我尝试过 setHeader 和 addHeader 以及同
  • 使用带有 HTTPS 证书的 System.Net.WebClient

    在我的 C Windows 客户端中 我向 母舰 进行了 POST 提交 当然 我希望提交的数据受到保护 因此我付费让 HostGator 向我颁发 SSL 证书 我保存了 CER 文件 并且正在构建请求 如下所示 wrapper for
  • 如何使用 jQuery 设置计时器来发送 HTML 表单的 HTTP post 数据

    我有一个 HTML 表单 需要使用 HTTP POST 和输入数据将其发布到服务器 具体来说 我只需要发送表单中选中的所有复选框的参数值 如果用户10分钟内没有自己做 我就需要做 我不确定实现这一目标的最佳方法 但现在我正在尝试使用 jQu
  • Android Multipart HTTP Post 不发送文件的 MIME 类型

    试图找出我的编码有什么问题 我关注了一篇博客文章here http evgenyg wordpress com 2010 05 01 uploading files multipart post apache 我设法获得了将文件实际上传到

随机推荐

  • 多个 Facebook 评论实例

    每当用户使用 JQuery 执行特定操作时 我都需要在页面上加载多个 Facebook 评论框 http developers facebook com docs reference plugins comments 如果我要一次加载所有评
  • 在 MediaElement.js 中的视频末尾停止而不是倒带

    我想知道如何在视频结束时停止 MediaElement js 播放器 我想知道如何在视频结束时停止 mediaelement js 播放器 我希望保留最后一帧 而不是像现在一样倒带显示第一帧 是否可以改变这种行为 我为这个问题编写了一个修复
  • 如何在制表符中显示选择编辑器文本而不是值

    As the 编辑器选择 http tabulator info docs 4 1 edit edit values steve Steve Boberson bob Bob Jimmerson jim Jim Stevenson 我可以发
  • 覆盖 gem 的 lib 文件夹中的私有方法

    spree auth devise gem 中有一个私有方法 该方法位于控制器 UserSessionsController 内部https github com spree spree auth devise blob master li
  • Node 和 NPM 运行脚本和 Ctrl-C 触发 SIGINT 两次

    我在运行的一个 Nodejs 应用程序上遇到了问题npm start 这只是node app js 我的应用程序包含一个 sigint 处理程序 如下所示 process on SIGINT gt db disconnect then pr
  • 在Python中对字典键进行排序[重复]

    这个问题在这里已经有答案了 我有一个字典 其中每个键引用一个 int 值 根据值将键排序到列表中的最佳方法是什么 我喜欢这一个 sorted d key d get
  • 如何以编程方式将 ContextMenu 添加到系统托盘图标?

    我想以编程方式向托盘图标添加上下文菜单 这样当我右键单击托盘图标时 它应该显示菜单 我应该如何为托盘图标编写右键单击事件处理程序 我已经尝试过以下方法 private void Icon MouseRightClick object sen
  • Business Catalyst:检查我们是否位于 Liquid 的根 URL 上

    我想使用 Liquid 标记来测试正在查看的页面是否是主页 但特别是网站的根 URL 例如www mysite com 我尝试使用 globals get 因为根据BC 文档 http docs businesscatalyst com r
  • mongodb Nodejs Each 与 toArray

    我快速浏览了一下 没有找到任何令我满意的答案 但基本上我已经开始使用带有express和mongodb的node js来创建webapi 而不是通常的 Net MVC Web API路线 但我注意到的一件事是 为了返回结果集合 我正在以相当
  • 在 Django 中,当登录 URL 以 ?next=/accounts/logout/ 结尾时,停止重定向回注销

    在我的模板中 我目前正在使用next参数将用户重定向回登录页面之前的页面 a href Log in a The firstof标签确保万一request path无效 那么它将重定向回根 URL 这在除注销页面之外的每个页面上都适用 如果
  • 如何保证清理代码在 Windows C++ 中运行(SIGINT、错误分配和关闭窗口)

    我有一个 Windows C 控制台程序 如果我不调用ReleaseDriver 在我的程序结束时 某些硬件会进入错误状态 并且在不重新启动的情况下无法再次使用 我想确定一下ReleaseDriver 即使程序异常退出 例如如果我点击Ctr
  • 在 JDialog 中使用 JCalendar

    我的程序使用JDialogs 打开表格并采用我想要使用的表格JCalendar让用户选择一个日期 然后我将其用于其他方法 我已经下载了JCalendar图书馆 我读了一些示例代码 但仍然不知道该怎么做 我有一个想法 在表单中 您按下一个按钮
  • jQuery 动画分几步?

    我正在编写自己的动画函数是为了好玩 但我无法真正获得流畅的动画 jQuery 每个动画的步骤比例非常好 使其非常流畅 我想知道他们用来计算要采取多少步骤的通用公式是什么 这取决于动画的持续时间 jQuery 使用其默认设置存储在jQuery
  • 我正在尝试在Python中执行有向图的传递约简

    作为警告 我对 python 仍然有点缺乏经验 我正在尝试使用 networkx 库执行有向图的传递约简 我已经想出了一个算法 但在实现它时遇到了困难 经过快速搜索 我在其他堆栈交换问题中找到了与我类似的算法 但没有演示如何实际编码该算法
  • 在现代复杂游戏中实现成就系统

    如今创建的许多游戏都带有自己的成就系统 奖励玩家 用户完成某些任务 stackoverflow 上的徽章系统是完全相同的 但有一些问题我无法找到好的解决方案 成就系统必须始终留意某些事件 想想一款提供 20 到 30 个成就的游戏 例如 战
  • 如何使用实体框架在多层应用程序中正确管理 ObjectContext 生命周期?

    我见过很多在 MVC3 应用程序中使用实体框架的示例 它们都是非常简单的演示 只有一个包含 edmx 的 mvc3 Web 项目 因此 他们可以通过 using 语句使用打开和关闭连接的最佳实践 using var context new
  • Appium Inspector 无法在 iOS 元素层次结构中找到子元素

    应用程序构建于 反应本机0 62 2 测试使用的工具 Appium v 1 17 1 问题描述 Appium Inspector 不会检查 定位 iOS 层次结构中的子元素 我们使用 testID 和accessibilityLabel 属
  • Debug.Assert 似乎在 Mono 中不起作用

    考虑以下 C 程序 using System using System Diagnostics namespace Test class MainClass public static void Main string args Debug
  • React 延迟加载 JavaScript 文件

    我正在尝试使用 React lazy 来提高我的应用程序的性能 由于以太坊轻钱包是一个巨大的文件 我想将其放入一个单独的包中 当前正在运行的导入如下 import lightwallet from eth lightwallet dist
  • 调用 HTTP_POST 时出现 Bad Request 错误?

    我有一个关于 SAP 功能模块 http post 的问题 我只想将 SAP 中的一条短消息 msg 发布到我之前安装的推送通知服务器 pushd Github Projekt 现在我不知道如何传递消息 我用测试符号测试了 FM CALL