PHP/JSON-Post
有人能告诉我这有什么问题吗?我从未尝试过在curl/php上发布多维数组,如有任何帮助,将不胜感激 从服务器得到错误的响应,我认为他们得到了一些数据,但他们的响应没有帮助。试图建立在他们的代码上,所以他们不会帮助做这种事情。(这不是反对他们的TOS,只是他们不支持) 另外,我知道cookie文件/auth正在工作,因为我在另一个函数上做得很好,只是其中一个不是多维函数PHP/JSON-Post,php,arrays,json,curl,Php,Arrays,Json,Curl,有人能告诉我这有什么问题吗?我从未尝试过在curl/php上发布多维数组,如有任何帮助,将不胜感激 从服务器得到错误的响应,我认为他们得到了一些数据,但他们的响应没有帮助。试图建立在他们的代码上,所以他们不会帮助做这种事情。(这不是反对他们的TOS,只是他们不支持) 另外,我知道cookie文件/auth正在工作,因为我在另一个函数上做得很好,只是其中一个不是多维函数 $post_data = array ( 'tradeOrder' => array ( 'Fir
$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
}
}
你的术语有些混乱。PHP数组和JSON都不是多维的;它们是嵌套的。此外,没有HTML表单生成JSON编码的数据。是的,这是一个API 撇开这些评论不谈,只有服务提供商才能给您一个明确的答案,解释为什么您的内容不可接受,但是JSON示例中的布尔值在PHP代码中被定义为字符串,例如
'IsTrailingAmountAbsolute' => 'true'
应该是
'IsTrailingAmountAbsolute' => true
如果您想发布准确提供的JSON示例,主要错误如下:
'Legs' => array ( ... ),
此代码生成以下JSON:
{"FirstOrder":{"Legs":{"Id":"0",...}},...}
而不是:
{"FirstOrder":{"Legs":[{"Id":"0",...}]},...}
按以下方式更改“Legs”行:
'Legs' => array( array(
'Id' => '0',
'SecurityId' => '643',
'SecurityName' => 'AAPL',
'SecurityExchange' => 'NASDAQ national market',
'Side' => 'Buy',
'Quantity' => '100'
)),
另外(尽管我不认为这会导致问题),如果您希望数字编码为数字,布尔编码为布尔,请删除相对换行引号:
'SymbolLastPrice' => 93.72,
(...)
'AllOrNone' => false,
(...)
'LimitOffset' => 0,
(...)
您的问题不是关于多维数组,而是关于JSON字符串。你确定你的JSON符合API规则吗?你是否有一个curl错误,比如curl失败了还是使用它的应用程序失败了。看看这里。调用后,使用该函数从curl获取代码。还有,你从服务器上得到了什么HTTP响应代码,200,4nn,5nn等等?没有卷曲问题,还有200响应。我的意思是它不是一个API,不像公共API中的文档。我猜这是他们的内部API,所以你是对的。