PHP异步请求 POST和GET方式

POST方式:

        $host = "xxx.com";//主机地址,如localhost

        $path = 'http://xxx.com/Home/Api/testUrl';//要请求的url,如http://localhost/test/test.php

        $fp = fsockopen( $host , 80, $errno, $errstr, 30);
        if(!$fp)
        {
            echo '请求失败';exit;
        }else{

            //要发送的数据
            $data['name'] = '123';
            $data['pwd'] = '321';

            $post = http_build_query($data);//生成请求字符串
            $len = strlen($post);//字符串长度

            //拼接header部分
            $header = "POST $path HTTP/1.1\r\n";
            $header .= "Host: $host\r\n";
            $header .= "Content-type: application/x-www-form-urlencoded\r\n";
            $header .= "Connection: Close\r\n";
            $header .= "Content-Length: $len\r\n";
            $header .= "\r\n";
            $header .= $post."\r\n";

            fwrite($fp, $header);

            //输出请求结果(测试时用)
            //$receive = '';
            //while (!feof($fp)) 
            //{
            //  $receive .= '
'
.fgets($fp, 128); //} //echo "
"
.$receive; fclose($fp); }

GET方式:
把else里面的代码改成这样:

        $header = "GET $path?name='123'&pwd='321' / HTTP/1.1\r\n"; 
        $header .= "Host: $host\r\n"; 
        $header .= "Connection: Close\r\n\r\n";

        fwrite($fp, $header);
        fclose($fp);

但请求的url不能写成绝对路径
只能写成:

        $host = "localhost";//主机地址,如localhost
        $path = '/test/test.php';//要请求的url

用GET方式请求时请求的$path只能为路径,如localhost下的test文件夹下的test.php文件
不能请求如Thinkphp的url地址如http://xxx.com/Home/Api/testUrl
所以建议使用POST方式

你可能感兴趣的:(后端)