Laravel 空请求
Laravel empty request
我正在尝试使用 xml-rpc 和 Laravel 5.4
我正在使用 Open HttpRequester 向 Laravel 发送 xml 请求,
它 returns 200 OK 状态代码,但我无法处理请求数据。
我已经通过一种方法 (testMethod) 将请求路由到控制器,内容如下:
public function testMethod(Request $request) {
$req = xmlrpc_decode_request($request, $method);
print_r($req);
print_r($request->toArray());
}
我的 XML 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>testMethod</methodName>
<params>
<param>
<value>
<string>Test value 1</string>
</value>
</param>
</params>
</methodCall>
此请求仅return一个空白数组。
我做错了什么?
编辑:
添加一些额外的代码。
路线:
Route::post('/request', 'RequestController@testMethod');
原始请求:
POST http://localhost/laratest/public/index.php/request
User-Agent: /
Host: localhost
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>testMethod</methodName>
<params>
<param>
<value>
<string>Test value 1</string>
</value>
</param>
</params>
</methodCall>
回复:
(我正在使用 Open HttpRequester 查看响应)
浏览器模式:[]
明文模式:
Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|[]/\])/g, idRx = / \bsf-dump-\d+-ref[012]\w+\b/, keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl' , addEventListener = function (e, n, cb) { e.addEventListener(n, cb, false); }; (doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle); if (!doc.addEventListener) { addEventListener = function (element, eventName, callback) { element.attachEvent('on' + eventName, function (e) { e.preventDefault = function () { e.returnValue = false;}; e.target = e.srcElement; callback(e); }); }; } function toggle(a, recursive) { var s = a.nextSibling | | {}, oldClass = s.className, 箭头, newClass; if ('sf-dump-compact' == oldClass) { arrow = '▼'; newClass = 'sf-dump-expanded'; } else if ('sf-dump-expanded' == oldClass) { arrow = '▶'; newClass = 'sf-dump-compact'; } else { return false; } a.lastChild.innerHTML = arrow; s.className = newClass; if (递归) { try { a = s.querySelectorAll('.'+oldClass); for (s = 0; s < a.length; ++s) { if (a[s].className !== newClass ) { a[s].className = newClass; a[s].previousSibling.lastChild.innerHTML = arrow; } } } catch (e) { } } return true; }; return 函数 (根, x) { 根= doc.getElementById(根); var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad') || ' ').replace(rxEsc, '\$1')+')+', 'm' ), options = {"maxDepth":1,"maxStringLength":160,"fileLinkFormat":false}, elt = root.getElementsByTagName('A'), len = elt.length, i = 0, s, h, t = []; while (i < len) t.push(elt[i++]); for (i in x) { options[i] = x[i]; } function a(e, f) { addEventListener(root, e, function (e) { if ('A' == e.target.tagName) { f(e.target, e); } else if ('A' == e.target.parentNode.tagName) { f(e.target.parentNode, e); } else if (e.target.nextElementSibling && 'A' == e.target.nextElementSibling.tagName) { f(e.target.nextElementSibling, e, true); } }); };函数 isCtrlKey(e) { return e.ctrlKey || e.metaKey; } addEventListener(root, 'mouseover', function (e) { if ('' != refStyle.innerHTML) { refStyle.innerHTML = ''; } }); a('mouseover', function (a, e, c) { if (c) { e.target.style.cursor = "pointer"; } else if (a = idRx.exec( a.className)) { try { refStyle.innerHTML = 'pre.sf-dump .'+a[0]+'{background-color: #B729D9; color: #FFF !important; border-radius: 2px}' ; } 赶上 (e) { } } }); a('click', function (a, e, c) { if (/\bsf-dump-toggle\b/.test(a.className)) { e.preventDefault(); if (!toggle( a, isCtrlKey(e))) { var r = doc.getElementById(a.getAttribute('href').substr(1)), s = r.previousSibling, f = r.parentNode, t = a.parentNode; t.replaceChild(r, a); f.replaceChild(a, s); t.insertBefore(s, r); f = f.firstChild.nodeValue.match(indentRx); t = t.firstChild.nodeValue.match(indentRx); 如果 (f && t && f[0] !== t[0]) { r.innerHTML = r.innerHTML.replace(new RegExp('^'+f[0].replace(rxEsc, '\$1'), 'mg'), t[0]); } if ('sf-dump-compact' == r.className) { toggle(s, isCtrlKey(e)); } } if (c) { } else if (doc.getSelection) { try { doc.getSelection().removeAllRanges(); } catch (e) { doc.getSelection().empty(); } } else { doc.selection.empty(); } } else if (/\bsf-dump-str-toggle\b/.test(a.className)) { e.preventDefault(); e = a.parentNode.parentNode; e.className = e.className.replace(/sf-dump-str-(expand|collapse)/, a.parentNode.className) ; } }); elt = root.getElementsByTagName('SAMP'); len = elt.length;我 = 0; while (i < len) t.push(elt[i++]); len = t.length;对于 (i = 0; i < len; ++i) { elt = t[i];如果 ('SAMP' == elt.tagName) { elt.className = 'sf-dump-expanded'; a = elt.previousSibling || {};如果 ('A' != a.tagName) { a = doc.createElement('A'); a.className = 'sf-dump-ref'; elt.parentNode.insertBefore(a, elt); } else { a.innerHTML += ' '; } a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click] 展开所有子项'; a.innerHTML += '▼'; a.className += 'sf-dump-toggle'; x = 1;如果 ('sf-dump' != elt.parentNode.className) { x += elt.parentNode.getAttribute('data-depth')/1; } elt.setAttribute('data-depth', x);如果 (x > options.maxDepth) { 切换(a); } } else if ('sf-dump-ref' == elt.className && (a = elt.getAttribute('href'))) { a = a.substr(1); elt.className += ' '+a;如果 (/[[{]$/.test(elt.previousSibling.nodeValue)) { a = a != elt.nextSibling.id && doc.getElementById(a);尝试 { s = a.nextSibling; elt.appendChild(一); s.parentNode.insertBefore(a, s);如果 (/^[@#]/.test(elt.innerHTML)) { elt.innerHTML += ' ▶'; } else { elt.innerHTML = '▶'; elt.className = 'sf-dump-ref'; } elt.className += 'sf-dump-toggle'; } catch (e) { if ('&' == elt.innerHTML.charAt(0)) { elt.innerHTML = '…'; elt.className = 'sf-dump-ref'; } } } } } 如果 (0 >= options.maxStringLength) { return; } 尝试 { elt = root.querySelectorAll('.sf-dump-str'); len = elt.length;我 = 0; t = []; while (i < len) t.push(elt[i++]); len = t.length;对于 (i = 0; i < len; ++i) { elt = t[i]; s = elt.innerText || elt.textContent; x = s.length - options.maxStringLength;如果 (0 < x) { h = elt.innerHTML;埃尔特[elt.innerText? 'innerText' : 'textContent'] = s.substring(0, options.maxStringLength); elt.className += 'sf-dump-str-collapse'; elt.innerHTML = ''+h+' ◀'+ ''+elt.innerHTML+' ▶'; } } } 抓住 (e) { } }; })(文档); pre.sf-dump { 显示:块;白-space: pre;填充:5px; } pre.sf-dump span { 显示:内联; } pre.sf-dump .sf-dump-compact { 显示:none; } pre.sf-dump abbr { 文本装饰:none;边框:none;光标:帮助; } pre.sf-dump a { text-decoration: none;游标:指针;边界:0;大纲:none;颜色:继承; } pre.sf-dump .sf-dump-ellipsis { 显示:内联块;溢出:可见;文本溢出:省略号;最大宽度:5em;白色-space: nowrap;溢出:隐藏;垂直对齐:顶部; } pre.sf-转储代码{ display:inline; padding:0; background:none; } .sf-dump-str-collapse .sf-dump-str-collapse { 显示:none; } .sf-dump-str-expand .sf-dump-str-expand { 显示:none; }pre.sf-dump, pre.sf-dump .sf-dump-default{background-color:#fff;颜色:#222;行高:1.2em;字体粗细:正常; font:12px 摩纳哥,Consolas,单声道space; word-wrap: break-word; white-space:预包装; position:relative; z-index:100000}pre.sf-dump .sf-dump-num{color:#a71d5d}pre.sf-dump .sf-dump-const{color:#795da3}pre.sf- dump .sf-dump-str{color:#df5000}pre.sf-dump .sf-dump-cchr{color:#222}pre.sf-dump .sf-dump-note{color:#a71d5d }pre.sf-dump .sf-dump-ref{color:#a0a0a0}pre.sf-dump .sf-dump-public{color:#795da3}pre.sf-dump .sf-dump-protected{color:#795da3}pre.sf-dump .sf-dump-private{color:#795da3}pre.sf-dump .sf-dump-meta{color:#b729d9} pre.sf-dump .sf-dump-key{color:#df5000}pre.sf-dump .sf-dump-index{color:#a71d5d}[]
Sfdump("sf-dump-2001561441")
我认为如果您要发布原始数据,您可以使用 $request->getContent();
我正在尝试使用 xml-rpc 和 Laravel 5.4 我正在使用 Open HttpRequester 向 Laravel 发送 xml 请求, 它 returns 200 OK 状态代码,但我无法处理请求数据。
我已经通过一种方法 (testMethod) 将请求路由到控制器,内容如下:
public function testMethod(Request $request) {
$req = xmlrpc_decode_request($request, $method);
print_r($req);
print_r($request->toArray());
}
我的 XML 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>testMethod</methodName>
<params>
<param>
<value>
<string>Test value 1</string>
</value>
</param>
</params>
</methodCall>
此请求仅return一个空白数组。
我做错了什么?
编辑:
添加一些额外的代码。
路线:
Route::post('/request', 'RequestController@testMethod');
原始请求:
POST http://localhost/laratest/public/index.php/request
User-Agent: /
Host: localhost
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>testMethod</methodName>
<params>
<param>
<value>
<string>Test value 1</string>
</value>
</param>
</params>
</methodCall>
回复: (我正在使用 Open HttpRequester 查看响应) 浏览器模式:[]
明文模式:
Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|[]/\])/g, idRx = / \bsf-dump-\d+-ref[012]\w+\b/, keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl' , addEventListener = function (e, n, cb) { e.addEventListener(n, cb, false); }; (doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle); if (!doc.addEventListener) { addEventListener = function (element, eventName, callback) { element.attachEvent('on' + eventName, function (e) { e.preventDefault = function () { e.returnValue = false;}; e.target = e.srcElement; callback(e); }); }; } function toggle(a, recursive) { var s = a.nextSibling | | {}, oldClass = s.className, 箭头, newClass; if ('sf-dump-compact' == oldClass) { arrow = '▼'; newClass = 'sf-dump-expanded'; } else if ('sf-dump-expanded' == oldClass) { arrow = '▶'; newClass = 'sf-dump-compact'; } else { return false; } a.lastChild.innerHTML = arrow; s.className = newClass; if (递归) { try { a = s.querySelectorAll('.'+oldClass); for (s = 0; s < a.length; ++s) { if (a[s].className !== newClass ) { a[s].className = newClass; a[s].previousSibling.lastChild.innerHTML = arrow; } } } catch (e) { } } return true; }; return 函数 (根, x) { 根= doc.getElementById(根); var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad') || ' ').replace(rxEsc, '\$1')+')+', 'm' ), options = {"maxDepth":1,"maxStringLength":160,"fileLinkFormat":false}, elt = root.getElementsByTagName('A'), len = elt.length, i = 0, s, h, t = []; while (i < len) t.push(elt[i++]); for (i in x) { options[i] = x[i]; } function a(e, f) { addEventListener(root, e, function (e) { if ('A' == e.target.tagName) { f(e.target, e); } else if ('A' == e.target.parentNode.tagName) { f(e.target.parentNode, e); } else if (e.target.nextElementSibling && 'A' == e.target.nextElementSibling.tagName) { f(e.target.nextElementSibling, e, true); } }); };函数 isCtrlKey(e) { return e.ctrlKey || e.metaKey; } addEventListener(root, 'mouseover', function (e) { if ('' != refStyle.innerHTML) { refStyle.innerHTML = ''; } }); a('mouseover', function (a, e, c) { if (c) { e.target.style.cursor = "pointer"; } else if (a = idRx.exec( a.className)) { try { refStyle.innerHTML = 'pre.sf-dump .'+a[0]+'{background-color: #B729D9; color: #FFF !important; border-radius: 2px}' ; } 赶上 (e) { } } }); a('click', function (a, e, c) { if (/\bsf-dump-toggle\b/.test(a.className)) { e.preventDefault(); if (!toggle( a, isCtrlKey(e))) { var r = doc.getElementById(a.getAttribute('href').substr(1)), s = r.previousSibling, f = r.parentNode, t = a.parentNode; t.replaceChild(r, a); f.replaceChild(a, s); t.insertBefore(s, r); f = f.firstChild.nodeValue.match(indentRx); t = t.firstChild.nodeValue.match(indentRx); 如果 (f && t && f[0] !== t[0]) { r.innerHTML = r.innerHTML.replace(new RegExp('^'+f[0].replace(rxEsc, '\$1'), 'mg'), t[0]); } if ('sf-dump-compact' == r.className) { toggle(s, isCtrlKey(e)); } } if (c) { } else if (doc.getSelection) { try { doc.getSelection().removeAllRanges(); } catch (e) { doc.getSelection().empty(); } } else { doc.selection.empty(); } } else if (/\bsf-dump-str-toggle\b/.test(a.className)) { e.preventDefault(); e = a.parentNode.parentNode; e.className = e.className.replace(/sf-dump-str-(expand|collapse)/, a.parentNode.className) ; } }); elt = root.getElementsByTagName('SAMP'); len = elt.length;我 = 0; while (i < len) t.push(elt[i++]); len = t.length;对于 (i = 0; i < len; ++i) { elt = t[i];如果 ('SAMP' == elt.tagName) { elt.className = 'sf-dump-expanded'; a = elt.previousSibling || {};如果 ('A' != a.tagName) { a = doc.createElement('A'); a.className = 'sf-dump-ref'; elt.parentNode.insertBefore(a, elt); } else { a.innerHTML += ' '; } a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click] 展开所有子项'; a.innerHTML += '▼'; a.className += 'sf-dump-toggle'; x = 1;如果 ('sf-dump' != elt.parentNode.className) { x += elt.parentNode.getAttribute('data-depth')/1; } elt.setAttribute('data-depth', x);如果 (x > options.maxDepth) { 切换(a); } } else if ('sf-dump-ref' == elt.className && (a = elt.getAttribute('href'))) { a = a.substr(1); elt.className += ' '+a;如果 (/[[{]$/.test(elt.previousSibling.nodeValue)) { a = a != elt.nextSibling.id && doc.getElementById(a);尝试 { s = a.nextSibling; elt.appendChild(一); s.parentNode.insertBefore(a, s);如果 (/^[@#]/.test(elt.innerHTML)) { elt.innerHTML += ' ▶'; } else { elt.innerHTML = '▶'; elt.className = 'sf-dump-ref'; } elt.className += 'sf-dump-toggle'; } catch (e) { if ('&' == elt.innerHTML.charAt(0)) { elt.innerHTML = '…'; elt.className = 'sf-dump-ref'; } } } } } 如果 (0 >= options.maxStringLength) { return; } 尝试 { elt = root.querySelectorAll('.sf-dump-str'); len = elt.length;我 = 0; t = []; while (i < len) t.push(elt[i++]); len = t.length;对于 (i = 0; i < len; ++i) { elt = t[i]; s = elt.innerText || elt.textContent; x = s.length - options.maxStringLength;如果 (0 < x) { h = elt.innerHTML;埃尔特[elt.innerText? 'innerText' : 'textContent'] = s.substring(0, options.maxStringLength); elt.className += 'sf-dump-str-collapse'; elt.innerHTML = ''+h+' ◀'+ ''+elt.innerHTML+' ▶'; } } } 抓住 (e) { } }; })(文档); pre.sf-dump { 显示:块;白-space: pre;填充:5px; } pre.sf-dump span { 显示:内联; } pre.sf-dump .sf-dump-compact { 显示:none; } pre.sf-dump abbr { 文本装饰:none;边框:none;光标:帮助; } pre.sf-dump a { text-decoration: none;游标:指针;边界:0;大纲:none;颜色:继承; } pre.sf-dump .sf-dump-ellipsis { 显示:内联块;溢出:可见;文本溢出:省略号;最大宽度:5em;白色-space: nowrap;溢出:隐藏;垂直对齐:顶部; } pre.sf-转储代码{ display:inline; padding:0; background:none; } .sf-dump-str-collapse .sf-dump-str-collapse { 显示:none; } .sf-dump-str-expand .sf-dump-str-expand { 显示:none; }pre.sf-dump, pre.sf-dump .sf-dump-default{background-color:#fff;颜色:#222;行高:1.2em;字体粗细:正常; font:12px 摩纳哥,Consolas,单声道space; word-wrap: break-word; white-space:预包装; position:relative; z-index:100000}pre.sf-dump .sf-dump-num{color:#a71d5d}pre.sf-dump .sf-dump-const{color:#795da3}pre.sf- dump .sf-dump-str{color:#df5000}pre.sf-dump .sf-dump-cchr{color:#222}pre.sf-dump .sf-dump-note{color:#a71d5d }pre.sf-dump .sf-dump-ref{color:#a0a0a0}pre.sf-dump .sf-dump-public{color:#795da3}pre.sf-dump .sf-dump-protected{color:#795da3}pre.sf-dump .sf-dump-private{color:#795da3}pre.sf-dump .sf-dump-meta{color:#b729d9} pre.sf-dump .sf-dump-key{color:#df5000}pre.sf-dump .sf-dump-index{color:#a71d5d}[] Sfdump("sf-dump-2001561441")
我认为如果您要发布原始数据,您可以使用 $request->getContent();