2017-04-10 181 views
1

我想弄清楚使用xml-rpc与Laravel 5.4 我使用Open HttpRequester向Laravel发送xml请求, 它返回200 OK状态代码,但我无法处理请求数据。Laravel空请求

我要给你传送到一个控制器,只有一个方法(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> 

该请求仅返回空白数组。

我在做什么错?

编辑:

添加一些额外的代码。

路线:

Route::post('/request', '[email protected]'); 

原始请求:

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> 

响应: (我使用开放HttpRequester以查看响应) 浏览器模式:[]

明文模式:

Sfdump = window.Sfdum p || (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,arrow,newClass; if('sf-dump-compact'== oldClass) {arrow ='▼'; newClass ='sf-dump-expanded';} else if('sf-dump-expanded'== oldClass){arrow ='▶'; newClass ='sf-dump-compact';} else {返回false; } a.lastChild.innerHTML = arrow; s.className = newClass; if(recursive){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; };返回函数(root,x){root = doc.getElementById(root); 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 .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;颜色:#FFF!重要; border-radius:2px}'; } catch(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); if (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.classN ame = e.className.replace(/ sf-dump-str-(展开|折叠)/,a.parentNode.className); }}); elt = root.getElementsByTagName('SAMP'); len = elt.length; i = 0; while(i < len)t.push(elt [i ++]); len = t.length; for(i = 0; i < len; ++ i){elt = t [i]; if('SAMP'== elt.tagName){elt.className ='sf-dump-expanded'; a = elt.previousSibling || {}; if('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); if(x> options.maxDepth){toggle(a); }} else else('sf-dump-ref'== elt.className & &(a = elt.getAttribute('href'))){a = a.substr(1); elt.className + =''+ a; if(/ [[{]$/.test(elt.previousSibling.nodeValue)){a = a!= elt.nextSibling.id & & doc.getElementById(a);尝试{s = a.nextSibling; elt.appendChild(一); s.parentNode.insertBefore(a,s); if(/^[@#]/.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 ='&hellip;'; elt.className ='sf-dump-ref'; }}}}} if(0> = options.maxStringLength){return; }尝试{elt = root.querySelectorAll('。sf-dump-str'); len = elt.length; i = 0; t = []; while(i < len)t.push(elt [i ++]); len = t.length; for(i = 0; i < len; ++ i){elt = t [i]; s = elt.innerText || elt.textContent; x = s.length - options.maxStringLength;如果(0 < x){h = elt.innerHTML; elt [elt.innerText? 'innerText':'textContent'] = s.substring(0,options.maxStringLength); elt.className + ='sf-dump-str-collapse'; elt.innerHTML =''+ h +'◀'+''+ elt.innerHTML +'▶'; }}} catch(e){}}; })(文件); pre.sf-dump {display:block; white-space:pre;填充:5px; } pre.sf-dump span {display:inline; } pre.sf-dump .sf-dump-compact {display:none; } pre.sf-dump abbr {text-decoration:none; border:none;光标:帮助; } pre.sf-dump a {text-decoration:none;光标:指针; border:0;概要:无;颜色:继承; } pre.sf-dump .sf-dump-ellipsis {display:inline-block;溢出:可见;文本溢出:省略号;最大宽度:5em;白色空间:nowrap;溢出:隐藏; vertical-align:top; } pre.sf-dump code {display:inline;填充:0;背景:无; } .sf-dump-str-collapse .sf-dump-str-collapse {display:none; } .sf-dump-str-expand .sf-dump-str-expand {display:none; } pre.sf-dump,pre.sf-dump .sf-dump-default {background-color:#fff;颜色:#222;行高:1.2em;字体重量:正常;字体:12px摩纳哥,Consolas,等宽;单词包装:分词;白色空间:预包装;位置:相对; 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-转储指数{COLOR:#a71d5d} [] Sfdump( “SF-转储2001561441”)

+0

http://php.net /manual/en/function.xmlrpc-decode-request.php - 使用此函数需要您自担风险 无论如何,您对此功能有何期望?如果您使用SOAP,则可以使用SOAP库。如果你正在使用JSON - json_decode等 –

+0

我真的是一个web服务的新手,只是想弄明白。我必须使用xml-rpc,因为这是我的雇主希望实施的。我知道xml_rpc_decode_request和xml_rpc_encode_request是实验性的,但如果这是问题,那么print_r($ request-> toArray)将正常工作,但它不会; –

+0

使用'dd($ request)'而不是'print_r' –

回答

1

我认为你可以使用$request->getContent();如果你要发送的原始数据