Home >Backend Development >PHP Tutorial > php post请求乱码的有关问题

php post请求乱码的有关问题

WBOY
WBOYOriginal
2016-06-13 12:42:18942browse

php post请求乱码的问题
使用最土模板里的post请求源码如下

<br />
	static public function DoPost($url,$post_data=array()){<br />
		$url2 = parse_url($url);<br />
		$url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);<br />
		$url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);<br />
		$host_ip = @gethostbyname($url2["host"]);<br />
		$fsock_timeout = 2; //2 second<br />
		if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){<br />
			return false;<br />
		}<br />
		$request =  $url2["path"].($url2["query"] ? "?" . $url2["query"] : "");<br />
		$post_data2 = http_build_query($post_data);<br />
		$post_data2=urldecode($post_data2);<br />
		$in  = "POST " . $request . " HTTP/1.0\r\n";<br />
		$in .= "Accept: */*\r\n";<br />
		$in .= "Host: " . $url2["host"] . "\r\n";<br />
		$in .= "User-Agent: Lowell-Agent\r\n";<br />
		$in .= "Content-type: application/x-www-form-urlencoded\r\n";<br />
		$in .= "Content-Length: " . strlen($post_data2) . "\r\n";<br />
		$in .= "Connection: Close\r\n\r\n";<br />
		$in .= $post_data2 . "\r\n\r\n";<br />
		unset($post_data2);<br />
		if(!@fwrite($fsock, $in, strlen($in))){<br />
			fclose($fsock);<br />
			return false;<br />
		}<br />
		return self::GetHttpContent($fsock);<br />
	}<br />
<br />
	static private function GetHttpContent($fsock=null) {<br />
		$out = null;<br />
		while($buff = @fgets($fsock, 2048)){<br />
			$out .= $buff;<br />
		}<br />
		fclose($fsock);<br />
		$pos = strpos($out, "\r\n\r\n");<br />
		$head = substr($out, 0, $pos);    //http head<br />
		$status = substr($head, 0, strpos($head, "\r\n"));    //http status line<br />
		$body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body<br />
		if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){<br />
			if(intval($matches[1]) / 100 == 2){<br />
				return $body;  <br />
			}else{<br />
				return false;<br />
			}<br />
		}else{<br />
			return false;<br />
		}<br />
	}<br />

实现的是http短信发送 因为运营商没有urldecode 我这里只能想到参数原文字请求 发送到手机的短信是乱码的本人接触php也不久 想请教下各位 有没有什么办法 能解决乱码问题。
可不可以通过其他方式请求http。

PHP 乱码
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn