curl中post传参问题注解

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)
		// );<span style="color:#FF0000;">//data如果以这样的数组形式传递就不能成功,必须以下面的形式传递才能成功,很奇怪</span>
		
		$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的数组修改成字符串形式,才成功。

具体代码如上。

有谁能给我解释一下,谢谢。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扬子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值