猿问

PHP vs Golang http 调用得到不同的结果

我正在尝试在 Google App Engine Go 中实现以下 PHP 代码:


<?php


function api_query(array $req = array()) {

        $key = '90294318da0162b082c3d27126be80c3873955f9';


        $req['method'] = 'getinfo';

        $req['nonce'] = 1394503747386411;


        // generate the POST data string

        $post_data = http_build_query($req, '', '&');

        $sign = '75da1e3ff750286bf73d03197f1b779fbfff963fd7402941ae326509a6615eacb839b44f236b4d5ee6cff39321e7b35e9563a9a2075e99df0f4ee3b732999348';


        // generate the extra headers

        $headers = array(

                'Sign: '.$sign,

                'Key: '.$key,

        );


        // our curl handle (initialize if required)

        static $ch = null;

        if (is_null($ch)) {

                $ch = curl_init();

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; Cryptsy API PHP client; '.php_uname('s').'; PHP/'.phpversion().')');

        }

        curl_setopt($ch, CURLOPT_URL, 'https://api.cryptsy.com/api');

        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);


        // run the query

        $res = curl_exec($ch);


        if ($res === false) throw new Exception('Could not get reply: '.curl_error($ch));

        $dec = json_decode($res, true);

        if (!$dec) throw new Exception('Invalid data received, please make sure connection is working and requested API exists');


        echo "<pre>".print_r($dec, true)."</pre>";

        return $dec;

}


我收到一条错误消息,提示“无法授权请求 - 检查您的发布数据”。有没有人看到可能导致此错误的原因?目前我最好的猜测是 Go 中的请求头可能是一个 map[string][]string,而在 PHP 中它似乎是一个数组......


绝地无双
浏览 200回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答