$post_string = "app=socket&version=beta&username=".$userid."&pwd=".$userpwd."";$re = request_by_socket('xinqq163.com','/api/xinqq_login.php',$post_string);
echo $re;function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
{
$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
if (!$socket) die("$errstr($errno)"); fwrite($socket, "POST $remote_path HTTP/1.0\r\n");
fwrite($socket, "User-Agent: Socket Example\r\n");
fwrite($socket, "HOST: $remote_server\r\n");
fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');
fwrite($socket, "Accept:*/*\r\n");
fwrite($socket, "\r\n");
fwrite($socket, "mypost=$post_string\r\n");
fwrite($socket, "\r\n");
$header = "";
while ($str = trim(fgets($socket, 4096))) {
$header .= $str;
}
$data = "";
while (!feof($socket)) {
$data .= fgets($socket, 4096);
}
return $data;
} 错误提示:
411 Length Required
echo $re;function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
{
$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
if (!$socket) die("$errstr($errno)"); fwrite($socket, "POST $remote_path HTTP/1.0\r\n");
fwrite($socket, "User-Agent: Socket Example\r\n");
fwrite($socket, "HOST: $remote_server\r\n");
fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');
fwrite($socket, "Accept:*/*\r\n");
fwrite($socket, "\r\n");
fwrite($socket, "mypost=$post_string\r\n");
fwrite($socket, "\r\n");
$header = "";
while ($str = trim(fgets($socket, 4096))) {
$header .= $str;
}
$data = "";
while (!feof($socket)) {
$data .= fgets($socket, 4096);
}
return $data;
} 错误提示:
411 Length Required
理论上411就是没有发送长度过去的Content-Type也改大写
Accept挪到前面,让Content-Length紧接着数据
另外mypost=$post_string是不是有点奇怪?相当于 mypost=app=socket&version=……
strlen($post_string) + 8 这个+8是怎么回事?抓包看看你最后发送了什么出去?
2.HTTP/1.1 200 OK不就是返回正确了么?
<?$data = array(
'username'=>'username',
'pwd'=>'1223355');
while (list($k,$v) = each($data)) {
$post .= rawurlencode($k)."=".rawurlencode($v)."&";
}echo $post;
//exit;$post = substr( $post , 0 , -1 );
$len = strlen($post);
//发送
$host = "www.xinqq163.com";
$file = "/api/ceshi.php";
$fp = @fsockopen( $host , 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)\n";
} else {
$receive = '';
$out = "POST $file HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: $len\r\n";
$out .="\r\n";
$out .= $post."\r\n";
echo($out);
//exit;
fwrite($fp, $out);
while (!feof($fp)) {
$receive .= fgets($fp, 128);
}
fclose($fp);
}echo $receive;
echo '完成结束';?>