开发者社区> jerrywangsap> 正文

利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据

简介: Created by Jerry Wang, last modified on Aug 19, 2014 Javascript source code:
+关注继续查看

Created by Jerry Wang, last modified on Aug 19, 2014

Javascript source code:

<html>
<head>
<script type="text/javascript">
var xmlhttp;
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest) {
       return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
       return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}
function stateChanged()
{
   if (xmlhttp.readyState == 4) {
       document.getElementById("result").innerHTML = xmlhttp.responseText;
       document.getElementById("result").style.border = "1px solid #A5ACB2";
  }
}
function getRequestURL(str)
{
    var url = <use your own url here>+ str;
    url = url + "&sid=" + Math.random();
    return url;
}
function showResult(str)
{
if (str.length == 0 ) {
  document.getElementById("result").innerHTML = "";
  document.getElementById("result").style.border = "0px";
  return;
}
xmlhttp = GetXmlHttpObject();
if (xmlhttp == null ){
  alert ("Your browser does not support XML HTTP Request");
  return;
  }
var requesturl = getRequestURL(str);
xmlhttp.onreadystatechange = stateChanged ;
if ("withCredentials" in xmlhttp) {
 console.log("Great!!!!!");
}
xmlhttp.open("POST",requesturl,true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = [];
data.push( escape("firstname=Jerry 1"));
data.push( escape("lastname=Wang 2")); 
xmlhttp.send(data.join("&"));
}
</script>
</head>
<body>
<input type="text" id="fname" onkeyup="showResult(this.value)" />
<div id = "result" ></div>
</body>
</html>

设置Content-Type为form-urlencoded, 即需要通过http post发送到server端的数据通过name-value pair的形式加到post url中去。

在ABAP 端能够成功还原出发送的firstname和lastname的数据:


image.png

在Chrome里观察到的form data:

image.png


如果content type改成text/plain:

xmlhttp.setRequestHeader("Content-Type", "text/plain");
var data = [];
data.push( escape("firstname=Jerry 1"));
data.push( escape("lastname=Wang 2")); 
xmlhttp.send(data.join("\r\n"));

image.png

则发送的firstname和lastname将不会出现在form fields里:

image.png


此时firstname和lastname只能通过request->get_cdata() 来读取:

server->request->get_header_fields( CHANGING fields = lt_header ).
  server->request->get_form_fields( CHANGING fields = lt_form ).
  lv_data = server->request->get_cdata( ).
  SPLIT lv_data AT cl_abap_char_utilities=>cr_lf INTO TABLE lt_result.


设置标签

image.png


Chrome里出现的位置从Form Data 改成了Request payload:


image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HTTP的PUT请求和POST请求的区别是什么?底层原理是什么?
HTTP的PUT请求和POST请求的区别是什么?底层原理是什么?
55 0
接口测试Http协议下的Get和Post请求的区别
Get请求:从指定的服务器中获取数据,直接在浏览器里输入就可以获取信息; Post的请求:提交数据给指定的服务器处理,可以向服务器发送修改请求,从而修改服务器的数据,需要借助测试工具。 Get和Post请求的基本区别和深入的区别详解。。。
65 0
简单的Python文件服务器和HTTP POST上传文件C代码
简单的Python文件服务器和HTTP POST上传文件C代码
28 0
HTTP请求中Get和Post的区别是什么?
HTTP请求中Get和Post的区别是什么?
28 0
QT 给http服务器发送GET/POST请求并接收返回值
QT 给http服务器发送GET/POST请求并接收返回值
387 0
HTTP协议中的GET、POST请求方法的区别
从上面的请求参数可见性我们已经知道 GET请求的所有参数都是在URL中发送的 我们常说的GET请求有数据长度限制,其实那只是浏览器对URL长度的限制 嗯,这里要看清一个点:是浏览器 而不是HTTP协议的规定,同时在web服务器上也有对于长度的限制
60 0
解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
116 0
HTTP中GET/POST请求的区别
HTTP中GET/POST请求的区别
74 0
HTTP协议中 GET 和 POST的区别(全)
目录前言1. 源码探讨2. 区别 前言 在了解这两个的区别的同时 还需要额外补充一些http协议中其他方法以此了解更加深入 方法 描述 GET 请求指定的页面信息,并返回实体主体 HEAD 类似于 GET 请求,返回的响应没有具体内容,用于获取报头 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改 PUT 从客户端向服务器传送的数据取代指定的文档的内容 DELETE 删除指定
47 0
http详解4-http协议和工作流程4形成post请求
http详解4-http协议和工作流程4形成post请求
30 0
+关注
jerrywangsap
文章
问答
视频
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
CDN助力企业网站进入HTTPS时代
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载