簡體   English   中英

PHP HTTP Post Server-無法獲取發布請求

[英]PHP HTTP Post Server - can't get post requests

因此,我正在為一個學校的小組項目工作,我們正在與一位希望與他的公司設備配合使用配套應用程序的客戶一起工作。 我們為設備提供主機IP或域,並且每5秒鍾左右以XML形式發送HTTP Post請求。 我們遇到的問題是我們不知道如何捕獲服務器上發送的數據。 簡單地嘗試獲取和轉儲所有$ _POST數據會產生一個空數組,而我們嘗試使用套接字產生了相似的結果。

我們嘗試將設備指向http://posttestserver.com/-盡管沒有可用的源代碼來查看網站的運行方式,但它可以完美地獲取數據。 誠然,我們對服務器端腳本的了解最多是有限的,因為我們僅使用PHP已有幾個月的時間,而這還沒有涉及到。

上面提到的發布服務器產生以下輸出(出於隱私目的,省略了一些數據)。 非常感謝您提供任何有關復制此內容的幫助,或者只是協助獲取我們服務器上的數據而已!

Time: Sun, 09 Nov 14 14:20:26 -0800
Source ip: ######

Headers (Some may be inserted by server)
HTTP_CONNECTION = close
REQUEST_URI = /post.php
QUERY_STRING = 
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = ######
REMOTE_ADDR = ######
CONTENT_LENGTH = 488
CONTENT_TYPE = application/xml
HTTP_USER_AGENT = Raven Uploader/v1
HTTP_FROM = ######
HTTP_ACCEPT = */*
HTTP_HOST = posttestserver.com
HTTPS = on
UNIQUE_ID = VF-oqtBx6hIAACKZ7j0AAAAH
REQUEST_TIME_FLOAT = 1415571626.7993
REQUEST_TIME = 1415571626

No Post Params.

== Begin post body ==
<?xml version="1.0"?><clientcompany macId="######" version="1.1" timestamp="1415571625s">
<PriceCluster>
  <DeviceMacId>######</DeviceMacId>
  <MeterMacId>######</MeterMacId>
  <TimeStamp>0x1bf2a52d</TimeStamp>
  <Price>0x00000467</Price>
  <Currency>0x007c</Currency>
  <TrailingDigits>0x04</TrailingDigits>
  <Tier>0x01</Tier>
  <StartTime>0x1bf2a52d</StartTime>
  <Duration>0xffff</Duration>
  <RateLabel>Block 2</RateLabel>
</PriceCluster>

</clientcompany>

== End post body ==

Upload contains PUT data:
<?xml version="1.0"?><clientcompany macId="0xd8d5b90016d1" version="1.1" timestamp="1415571625s">
<PriceCluster>
  <DeviceMacId>######</DeviceMacId>
  <MeterMacId>######</MeterMacId>
  <TimeStamp>0x1bf2a52d</TimeStamp>
  <Price>0x00000467</Price>
  <Currency>0x007c</Currency>
  <TrailingDigits>0x04</TrailingDigits>
  <Tier>0x01</Tier>
  <StartTime>0x1bf2a52d</StartTime>
  <Duration>0xffff</Duration>
  <RateLabel>Block 2</RateLabel>
</PriceCluster>

</clientcompany>

您需要捕獲原始輸入流:

//$data = $_POST; <-- will be empty unless you are sending a key value pair(s)
$data = file_get_contents('php://input'); //<-- will capture all posted data
echo '== Begin post body ==';   
echo $data;
echo '== End post body ==';

如果還需要查看標題,則可以使用getallheaders函數: http : getallheaders

代替$ _POST檢查$ HTTP_RAW_POST_DATA var

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM