[英]PHP CURL Multidimensional/JSON Post
有人可以告訴我這有什么問題嗎? 我從未嘗試過通過 curl/php 發布 multidim 數組,任何幫助將不勝感激。
從服務器得到不好的響應,我認為他們正在獲取一些數據,但他們的響應沒有幫助。 試圖建立在他們的代碼上,所以他們不會幫助這種事情。 (這並不違反他們的 TOS,只是他們不支持的東西)
另外,我知道 cookie 文件/身份驗證正在工作,因為我在另一個函數上執行此操作很好,除了一個不是多維的。
$post_data = array (
'tradeOrder' => array (
'FirstOrder' => array (
'Legs' => array (
'Id' => '0',
'SecurityId' => '643',
'SecurityName' => 'AAPL',
'SecurityExchange' => 'NASDAQ national market',
'Side' => 'Buy',
'Quantity' => '100'
),
'SymbolLastPrice' => '93.72',
'Price' => '93.75',
'StopPrice' => '0.01',
'Type' => 'Limit',
'TimeInForce' => 'Day',
'AllOrNone' => 'false',
'Exchange' => 'AUTO',
'TrailingAmount' => '0.01',
'TrailingAmountType' => 'Absolute',
'LimitOffset' => '0',
'LimitOffsetType' => 'Absolute',
'IsTrailingVisible' => 'false',
'IsLimitOffsetVisible' => 'false',
'IsTrailingAmountAbsolute' => 'true',
'IsLimitOffsetAbsolute' => 'true',
'ExecutionTarget' => 'New',
),
'AdvancedOrderType' => 'Simple',
'IsAdvancedOrder' => 'false'
)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://demo-trading.just2trade.com/TradeTicket/PlaceOrder");
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
//curl_setopt($ch, CURLOPT_HEADER, true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $result_array['access_token']]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_ENCODING,'gzip');
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
我嘗試發布的表格如下
{
"tradeOrder": {
"FirstOrder": {
"Legs": [{
"Id": 0,
"SecurityId": 643,
"SecurityName": "AAPL",
"SecurityExchange": "NASDAQ national market",
"Side": "Buy",
"Quantity": 100
}],
"SymbolLastPrice": 93.72,
"Price": 93.72,
"StopPrice": 0.01,
"Type": "Limit",
"TimeInForce": "Day",
"AllOrNone": false,
"Exchange": "AUTO",
"TrailingAmount": 0.01,
"TrailingAmountType": "Absolute",
"LimitOffset": 0,
"LimitOffsetType": "Absolute",
"IsTrailingVisible": false,
"IsLimitOffsetVisible": false,
"IsTrailingAmountAbsolute": true,
"IsLimitOffsetAbsolute": true,
"ExecutionTarget": "New"
},
"AdvancedOrderType": "Simple",
"IsAdvancedOrder": false
}
}
如果您想發布完全提供的 JSON 示例,主要錯誤在這一行:
'Legs' => array ( ... ),
此代碼生成此 JSON:
{"FirstOrder":{"Legs":{"Id":"0",...}},...}
代替:
{"FirstOrder":{"Legs":[{"Id":"0",...}]},...}
以這種方式更改“腿”行:
'Legs' => array( array(
'Id' => '0',
'SecurityId' => '643',
'SecurityName' => 'AAPL',
'SecurityExchange' => 'NASDAQ national market',
'Side' => 'Buy',
'Quantity' => '100'
)),
另外(雖然我不認為這會導致問題),如果您希望將數字編碼為數字並將布爾值編碼為布爾值,請刪除相關的包裝引號:
'SymbolLastPrice' => 93.72,
(...)
'AllOrNone' => false,
(...)
'LimitOffset' => 0,
(...)
你的術語有點混亂。 PHP 數組和 JSON 都不是多維的; 它們是嵌套的。 此外,沒有 HTML 表單生成 JSON 編碼的數據。 而且,是的,這是一個 API。
撇開評論不談,只有服務提供商才能給出明確的答案,說明為什么您的內容不可接受,但是您的 JSON 示例中的布爾值已在您的 PHP 代碼中定義為字符串,例如
'IsTrailingAmountAbsolute' => 'true'
應該
'IsTrailingAmountAbsolute' => true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.