PHP/JSON-Post

PHP/JSON-Post,php,arrays,json,curl,Php,Arrays,Json,Curl,有人能告诉我这有什么问题吗?我从未尝试过在curl/php上发布多维数组,如有任何帮助,将不胜感激 从服务器得到错误的响应,我认为他们得到了一些数据,但他们的响应没有帮助。试图建立在他们的代码上,所以他们不会帮助做这种事情。(这不是反对他们的TOS,只是他们不支持) 另外,我知道cookie文件/auth正在工作,因为我在另一个函数上做得很好,只是其中一个不是多维函数 $post_data = array ( 'tradeOrder' => array ( 'Fir

有人能告诉我这有什么问题吗?我从未尝试过在curl/php上发布多维数组,如有任何帮助,将不胜感激

从服务器得到错误的响应,我认为他们得到了一些数据,但他们的响应没有帮助。试图建立在他们的代码上,所以他们不会帮助做这种事情。(这不是反对他们的TOS,只是他们不支持)

另外,我知道cookie文件/auth正在工作,因为我在另一个函数上做得很好,只是其中一个不是多维函数

$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,所以你是对的。