0
코드 ignighter로 PHP에서 Google fusion 테이블을 만들려고합니다. - 내가 하드 코딩 토큰 행의 주석을 해제하면, 모든 것이 작동, 이상하게, https://github.com/philsturgeon/codeigniter-curl 나는 다음과 같은 컬 라이브러리를 사용하고연속으로 두 개의 컬 요청을 호출하는 데 실패했습니다. "Length Required"
{
$this->load->library('curl');
$token_url = 'https://www.google.com/accounts/ClientLogin';
//set username and password
$email = "[email protected]";
$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);
}
: 여기 내 코드입니다. 필요한 경우 정보를 제공했으나 결론은 오류 411 "Length Required"가 표시되고 요청에 대한 메타 데이터가 인쇄되지 않아서 두 번째 요청에서 현재 (즉, 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 ()
)
및 두번째, :
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 ()
)
정보를 인쇄 해주십시오. –
저는 여기서 추측하고 있지만 CURLOPT_HTTPHEADER를 수동으로 설정하고 있으므로 Content-Length 헤더를 제공해야한다고 생각합니다. 아마도 컬 라이브러리가 – mask8
정보를 추가 한 것을 덮어 씁니다. @ mask8 그건 당연한거야. Content-Length는 자동으로 채워 져야하고, 첫 번째 컬 요청에서 두 번째가 아닌. –