0

私はコードignighterを使用してPHPでグーグルフュージョンテーブルを作成しようとしています。これが私のコードです:

{
    $this->load->library('curl');

    $token_url = 'https://www.google.com/accounts/ClientLogin';

    //set username and password
    $email = "xxxx@gmail.com";
    $pass = "yyyyyy";

    $request_body = array("accountType" => "HOSTED_OR_GOOGLE",
                            "Email" => $email,
                            "Passwd" => $pass,
                            "service" => "fusiontables",
                            "source" => "fusiontables.GoogleFusion",
                        );

    $resp = $this->curl->simple_post($token_url, 
                                     $request_body, 
                                     array(CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded'))
                                     );  
    $response = explode("=", $resp);

    $token =  $response[3];

    echo "token = ". $token . "<br>";

$url = "http://tables.googlelabs.com/api/query";
    //$token = 'DQBBBLcAAABtXliIIvSrim6JpcrxFF23EKVEJHlrDob2TICiFGUISmUd6UXN3Y19MqvYozPuY973kPafpVEReFR8geHHpNGPeO2PGLr8aqQa__v2rZLR4XB0WwoNb0ksa2WWgve2tocgkfwFY4OjQkcbSqUZJbxPBNk5vYGT6kL9hZNNJRZX-XYhUGfYiGlpNyWA0Pe2ql23PsUVRKWotYjgTIKOzO_p6zEAbaEkoxZkpsioXQQqMTM2QFf-hKjYcbOai80IAQI';

    print_r($this->curl->info);

    $post_data = array(
                        "sql"=>"CREATE TABLE 'table123' (word: STRING, geom: LOCATION, timestamp: DATETIME)",
                        );  

    $resp = $this->curl->simple_post(   $url,
                                        $post_data,
                                        array(CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded', "Authorization: GoogleLogin auth=" . $token))
                                    );

    echo "<br>";
    print_r($this->curl->info);
echo "<br>";
    print_r($resp);
}

私は次のcurlライブラリを使用しています-https://github.com/philsturgeon/codeigniter-curl、そして奇妙なことに、ハードコードされたトークン行のコメントを外すと、すべてが機能します。必要に応じて情報を提供しましたが、最終的にはエラー411「LengthRequired」が発生し、印刷された情報から、2番目のリクエストでリクエストのメタデータ(つまりContent-Type)が存在しないように見えます。

最初のリクエストの情報は次のとおりです。

Array ( [url] => https://www.google.com/accounts/ClientLogin   
    [content_type] => text/plain   
    [http_code] => 200   
    [header_size] => 275   
    [request_size] => 268   
    [filetime] => -1   
    [ssl_verify_result] => 0   
    [redirect_count] => 0   
    [total_time] => 0.206787   
    [namelookup_time] => 4.3E-5   
    [connect_time] => 0.034345   
    [pretransfer_time] => 0.07166   
    [size_upload] => 124   
    [size_download] => 818   
    [speed_download] => 3955   
    [speed_upload] => 599   
    [download_content_length] => 818   
    [upload_content_length] => 0   
    [starttransfer_time] => 0.20675   
    [redirect_time] => 0   
    [certinfo] => Array ( )   
       )   

2つ目は、メタデータがありません。

Array ( [url] => http://tables.googlelabs.com/api/query   
        [content_type] =>   
        [http_code] => 411   
        [header_size] => 0   
        [request_size] => 538   
        [filetime] => -1   
        [ssl_verify_result] => 0   
        [redirect_count] => 0   
        [total_time] => 0.107731   
        [namelookup_time] => 0.000849   
        [connect_time] => 0.054077   
        [pretransfer_time] => 0.054085   
        [size_upload] => 97   
        [size_download] => 0   
        [speed_download] => 0   
        [speed_upload] => 900   
        [download_content_length] => -1   
        [upload_content_length] => 0   
        [starttransfer_time] => 0.107711   
        [redirect_time] => 0   
        [certinfo] => Array ( )   
          )
4

1 に答える 1

0

理解した。

交換:

$token =  $response[3];

$token =  trim($response[3]);

賢明な人への言葉(私ではなく、明らかに)は常にあなたの空白を気にします。

于 2012-08-19T08:17:06.597 に答える