捕获用PHP编码的CXML URL。不投递或获取

捕获用PHP编码的CXML URL。不投递或获取,php,xml,request,cxml,Php,Xml,Request,Cxml,除了POST、GET、COOKIE、SESSION和RAW之外,还有其他方式接收表单吗 我解释:我试图用PHP实现cXML Punchout,但似乎没有像通常发送的那样接收信息。我试着用PHP、GET、POST甚至是raw来捕捉它: file_get_contents('php://input') 但我没有发现任何变量 我找到一个URL向我的程序发送一个虚拟请求: 如果我向我的程序()发送请求,它不会在我的日志中注册任何内容,但我看到使用浏览器工具发送了一个CXML URL编码的请求 我如何

除了POST、GET、COOKIE、SESSION和RAW之外,还有其他方式接收表单吗

我解释:我试图用PHP实现cXML Punchout,但似乎没有像通常发送的那样接收信息。我试着用PHP、GET、POST甚至是raw来捕捉它:

file_get_contents('php://input')
但我没有发现任何变量

我找到一个URL向我的程序发送一个虚拟请求:

如果我向我的程序()发送请求,它不会在我的日志中注册任何内容,但我看到使用浏览器工具发送了一个CXML URL编码的请求

我如何捕捉我看到的信息

pS:如果你想自己在浏览器中看到它,你可以发送除现有URL以外的任何信息,否则它将发送404错误。

PS2:如果你想知道我怎么知道我没有收到任何东西,这是我记录收到的信息的方式:

ob_flush();
ob_start();
echo "User: - ". $_SERVER['HTTP_USER_AGENT']. ' - IP:'. $_SERVER['REMOTE_ADDR'].' - METHOD:'.$_SERVER['REQUEST_METHOD'].PHP_EOL;
echo 'POST:---------'.PHP_EOL;
var_dump($_POST);
echo 'GET:---------'.PHP_EOL;
var_dump($_GET);
echo 'RAW:---------'.PHP_EOL;
echo file_get_contents('php://input');
file_put_contents('./punchout_log_'.date("j.n.Y.H.i.s").'.txt', ob_get_flush());
导致空日志:

问题在于,您“记录”发布的数据不正确。您使用:

file_get_contents('php://input');
但是,这将返回数据。由于不回显它,因此它在日志文件中不可见

将其更改为以下内容:

echo file_get_contents('php://input');
更改后,您将看到所需的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.041/cXML.dtd">
<cXML payloadID="1576588580.7783@punchoutcommerce.com" timestamp="2019-12-17T13:16:20+00:00">
  <Header>
    <From>
      <Credential domain="NetworkId">
        <Identity>test</Identity>
      </Credential>
    </From>
    <To>
      <Credential domain="DUNS">
        <Identity>tww</Identity>
      </Credential>
    </To>
    <Sender>
      <Credential domain="NetworkId">
        <Identity>ewe</Identity>
        <SharedSecret>wew</SharedSecret>
      </Credential>
      <UserAgent>PunchOutCommerce PunchOut Tester</UserAgent>
    </Sender>
  </Header>
  <Request deploymentMode="production">
    <PunchOutSetupRequest operation="create">
      <BuyerCookie>76930ae895ac62a2a7e0c9d9350fa5f2</BuyerCookie>
      <Extrinsic name="User">jdoe12345</Extrinsic>
      <Extrinsic name="UniqueUsername">jdoe12345</Extrinsic>
      <Extrinsic name="UserId">12345</Extrinsic>
      <Extrinsic name="UserEmail">jdoe@example.com</Extrinsic>
      <Extrinsic name="UserFullName">John Doe</Extrinsic>
      <Extrinsic name="UserPrintableName">John Doe</Extrinsic>
      <Extrinsic name="FirstName">John</Extrinsic>
      <Extrinsic name="LastName">Doe</Extrinsic>
      <Extrinsic name="PhoneNumber">555-555-5555</Extrinsic>
      <BrowserFormPost>
        <URL>https://punchoutcommerce.com/tools/cxml-punchout-return</URL>
      </BrowserFormPost>
      <SupplierSetup>
        <URL>http://52.211.159.83/test.php?test=1</URL>
      </SupplierSetup>
      <ShipTo>
        <Address addressID="TEST">
          <Name xml:lang="en">TEST</Name>
          <PostalAddress>
            <Street>123 Street Address</Street>
            <City>Rockville</City>
            <State>MD</State>
            <PostalCode>20850</PostalCode>
            <Country isoCountryCode="US">US</Country>
          </PostalAddress>
        </Address>
      </ShipTo>
    </PunchOutSetupRequest>
  </Request>
</cXML>

测试
tww
母羊
wew
PunchOut商业PunchOut测试仪
76930ae895ac62a2a7e0c9d9350fa5f2
jdoe12345
jdoe12345
12345
jdoe@example.com
无名氏
无名氏
约翰
雌鹿
555-555-5555
https://punchoutcommerce.com/tools/cxml-punchout-return
http://52.211.159.83/test.php?test=1
试验
123街道地址
洛克维尔
医学博士
20850
美国

这是我所不知道的,但它是由于使用,而不是


“index.php”的laking导致重定向,从而避免捕获php://input

你说得对,我错过了回声,但仍然没有得到任何原始内容。我是否需要一个特殊的服务器配置来使用文件内容?如果是,是否可以改用curl?更新:我验证了phpinfo和remote\u url是打开的,所以file\u get\u内容应该可以正常工作。你知道为什么我看不到那些原始的东西吗(我正要奖励你,但我不得不等待,这是你应得的)