php post请求乱码的问题
使用最土模板里的post请求源码如下
static public function dopost($url,$post_data=array()){
$url2 = parse_url($url);
$url2[path] = ($url2[path] == ? / : $url2[path]);
$url2[port] = ($url2[port] == ? 80 : $url2[port]);
$host_ip = @gethostbyname($url2[host]);
$fsock_timeout = 2; //2 second
if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){
return false;
}
$request = $url2[path].($url2[query] ? ? . $url2[query] : );
$post_data2 = http_build_query($post_data);
$post_data2=urldecode($post_data2);
$in = post . $request . http/1.0\r\n;
$in .= accept: */*\r\n;
$in .= host: . $url2[host] . \r\n;
$in .= user-agent: lowell-agent\r\n;
$in .= content-type: application/x-www-form-urlencoded\r\n;
$in .= content-length: . strlen($post_data2) . \r\n;
$in .= connection: close\r\n\r\n;
$in .= $post_data2 . \r\n\r\n;
unset($post_data2);
if(!@fwrite($fsock, $in, strlen($in))){
fclose($fsock);
return false;
}
return self::gethttpcontent($fsock);
}
static private function gethttpcontent($fsock=null) {
$out = null;
while($buff = @fgets($fsock, 2048)){
$out .= $buff;
}
fclose($fsock);
$pos = strpos($out, \r\n\r\n);
$head = substr($out, 0, $pos); //http head
$status = substr($head, 0, strpos($head, \r\n)); //http status line
$body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
if(preg_match(/^http\/\d\.\d\s([\d]+)\s.*$/, $status, $matches)){
if(intval($matches[1]) / 100 == 2){
return $body;
}else{
return false;
}
}else{
return false;
}
}
实现的是http短信发送 因为运营商没有urldecode 我这里只能想到参数原文字请求 发送到手机的短信是乱码的本人接触php也不久 想请教下各位 有没有什么办法 能解决乱码问题。
可不可以通过其他方式请求http。
php 乱码