利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据
HTTP 利用 通过 ABAP post backend XMLHttpRequest 发送数据
2023-09-14 09:02:44 时间
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的数据:
在Chrome里观察到的form data:
如果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"));
则发送的firstname和lastname将不会出现在form fields里:
此时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.
Chrome里出现的位置从Form Data 改成了Request payload:
相关文章
- Qt之HTTP上传/下载
- 傻傻分不清的TCP keepalive和HTTP keepalive(转)
- http://www.cda.cn/view/25735.html
- http协议与tcp协议区别
- loadrunner12.55 :HTTP Properties > Advanced设置 之 Generate web_add_cookie functions
- 利用 http协议代替ftp协议进行数据传输
- nginx重新整理——————http请求的11个阶段[十二]
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求
- 使用Java程序通过http post访问Application server
- Atitit httpclient 概述 rest接口 目录 1. Httpclient 利用http协议的client类库与技术方法1 2. 功能用途 why2 2.1. 上传下载文件2
- 利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据
- TCP/UDP/HTTP的区别和联系
- y105.第六章 微服务、服务网格及Envoy实战 -- HTTP服务韧性(十六)
- 利用http_load测试Web引擎性能