curlにおけるpostパラメータ問題の注記
2622 ワード
public function translate($srcLan,$tgtLan,$srcSen){
header("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
header("Content-Type","application/x-www-form-urlencoded");
header("accept", "*/*");
header("Connection", "Keep-Alive");
if($srcSen == '' || !in_array($srcLan,$this->lang_type) || !in_array($tgtLan,$this->lang_type)){
return false;
}
if($srcLan == $tgtLan){
return false;
}
//
$encode = mb_detect_encoding($srcSen, "auto");
if ($encode != 'UTF-8'){
if($encode == 'GB2312'){
$encode = "GB2312//IGNORE";
}
$srcSen = iconv($encode,'UTF-8',$srcSen);
}
//CURL GET
// $get_url = $this->url . '&srcLan=' .$srcLan. '&tgtLan=' .$tgtLan. '&srcSen=' .urlencode($srcSen) ;
// $ch = curl_init ();
// curl_setopt ( $ch, CURLOPT_URL, $get_url);
// curl_setopt ( $ch, CURLOPT_HEADER, 0 );
// curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
// $content = curl_exec ( $ch );
// $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // http
// curl_close ( $ch );
// if($status_code == '500'){
// return false;
// }
//CURL POST
// $data = array(
// 'ID' => $this->TRANSLATE_USER,
// 'PW' => $this->TRANSLATE_PASSWD,
// 'srcLan' => $srcLan,
// 'tgtLan' => $tgtLan,
// 'srcSen' => urlencode($srcSen)
// );//data , ,
$data = 'ID='.urlencode($this->TRANSLATE_USER);
$data .= '&PW='.urlencode($this->TRANSLATE_PASSWD);
$data .= '&srcLan='.urlencode($srcLan);
$data .= '&tgtLan='.urlencode($tgtLan);
$data .= '&srcSen='.urlencode($srcSen);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $this->url );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
$content = curl_exec ( $ch );
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // http
curl_close ( $ch );
if($status_code == '500'){
return false;
}
return $content;
}
最近、翻訳機能を書いていますが、インタフェースはサードパーティが提供しているので、ここでは翻訳クラスをカプセル化する必要があります.
curlリクエストurlリソースを用いてget方式は簡単に成功したが,post方式はpostの配列を文字列形式に変更するまで成功しなかった.
具体的なコードは上記の通りです.
誰か説明してくれてありがとう.