Home > Backend Development > PHP Tutorial > PHP: 6 ways to send GET and POST requests, 6 ways to get_PHP tutorial

PHP: 6 ways to send GET and POST requests, 6 ways to get_PHP tutorial

WBOY
Release: 2016-07-13 10:12:23
Original
850 people have browsed it

PHP: 6 GET and POST request sending methods, 6 get

In the i94web blog, I tried two socialization methods, Changyan and Duoshuo. The comment box was later abandoned because it was unsafe.

Whether it is speaking freely or talking more, I need to grab the number of comments on articles remotely and then store them in the local database. For Duodao, the request format is as follows:

<span>// 获取评论次数,参数是文章ID</span><span>
<span>function</span> getCommCount($postid)
{
    $jsondata = file_get_contents(<span>"http://api.duoshuo.com/threads/counts.json?short_name=i94web&threads=$postid"</span>);
    <span>// 设置true返回数组,不设置或者是false则返回对象</span>
    $resjson= json_decode($jsondata,<span>true</span>);
    <span>return</span> $resjson[<span>'response'</span>][$postid][<span>'comments'</span>];
}</span>
Copy after login

For remote requests, there are many methods. Today, LZ has collected six types for your reference.

1. Use file_get_contents to get the content in get mode:

<span><?php
$url=<span>'http://www.ido321.com/'</span>;
$html = file_get_contents($url);
<span>echo</span> $html;
?></span>
Copy after login

2. Use fopen to open the url and use get method to obtain

<span>$fp = fopen($url, <span>'r'</span>);
stream_get_meta_data($fp);
<span>while</span>(!feof($fp)) {
$result .= fgets($fp, 1024);
}
<span>echo</span> <span>"url body: $result"</span>;
fclose($fp);</span>
Copy after login

3. Use file_get_contents to get the content in post mode:

<span>$data = <span>array</span> (<span>'foo'</span> => <span>'bar'</span>);
$data = http_build_query($data);
 
$opts = <span>array</span> (
<span>'http'</span> => <span>array</span> (
<span>'method'</span> => <span>'POST'</span>,
<span>'header'</span>=> <span>"Content-type: application/x-www-form-urlencodedrn"</span> .
<span>'Content-Length: '</span> . strlen($data) . <span>'rn'</span>,
<span>'content'</span> => $data
)
);
 
$context = stream_context_create($opts);
$html = file_get_contents(<span>'http://localhost/e/admin/test.html'</span>, <span>false</span>, $context);
 
<span>echo</span> $html;</span>
Copy after login

4. Use the fsockopen function to open the url and obtain the complete data in get mode, including header and body. fsockopen requires the allow_url_fopen option in PHP.ini to be turned on

<span>function</span><span> get_url ($url,$cookie=<span>false</span>)
{
$url = parse_url($url);
$query = $url[path].<span>'?'</span>.$url[query];
<span>echo</span> <span>'Query:'</span>.$query;
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
<span>if</span> (!$fp) {
<span>return</span> <span>false</span>;
} <span>else</span> {
$request = <span>'GET $query HTTP/1.1rn'</span>;
$request .= <span>'Host: $url[host]rn'</span>;
$request .= <span>'Connection: Closern'</span>;
<span>if</span>($cookie) $request.=<span>'Cookie:  $cookien'</span>;
$request.=<span>'rn'</span>;
fwrite($fp,$request);
<span>while</span>(!@feof($fp)) {
$result .= @fgets($fp, 1024);
}
fclose($fp);
<span>return</span> $result;
}
}
<span>//获取url的html部分,去掉header</span>
<span>function</span> GetUrlHTML($url,$cookie=<span>false</span>)
{
$rowdata = get_url($url,$cookie);
<span>if</span>($rowdata)
{
$body= stristr($rowdata,<span>'rnrn'</span>);
$body=substr($body,4,strlen($body));
<span>return</span> $body;
}
 
<span>return</span> <span>false</span>;
}</span>
Copy after login

5. Use the fsockopen function to open the url and obtain the complete data in POST mode, including header and body

<span>function</span><span> HTTP_Post($URL,$data,$cookie, $referrer=<span>''</span>)
{
 
<span>// parsing the given URL</span>
$URL_Info=parse_url($URL);
 
<span>// Building referrer</span>
<span>if</span>($referrer==<span>''</span>) <span>// if not given use this script as referrer</span>
$referrer=<span>'111'</span>;
 
<span>// making string from $data</span>
<span>foreach</span>($data <span>as</span> $key=>$value)
$values[]=<span>'$key='</span>.urlencode($value);
$data_string=implode(<span>'&'</span>,$values);
 
<span>// Find out which port is needed &ndash; if not given use standard (=80)</span>
<span>if</span>(!<span>isset</span>($URL_Info[<span>'port'</span>]))
$URL_Info[<span>'port'</span>]=80;
 
<span>// building POST-request:</span>
$request.=<span>"POST "</span>.$URL_Info[<span>'path'</span>].<span>" HTTP/1.1n"</span>;
$request.=<span>"Host: "</span>.$URL_Info[<span>'host'</span>].<span>"n"</span>;
$request.=<span>"Referer: $referern"</span>;
$request.=<span>"Content-type: application/x-www-form-urlencodedn"</span>;
$request.=<span>'Content-length: '</span>.strlen($data_string).<span>"n"</span>;
$request.=<span>'Connection: closen'</span>;
 
$request.=<span>'Cookie:  $cookien'</span>;
 
$request.=<span>'n'</span>;
$request.=$data_string.<span>'n'</span>;
 
$fp = fsockopen($URL_Info[<span>'host'</span>],$URL_Info[<span>'port'</span>]);
fputs($fp, $request);
<span>while</span>(!feof($fp)) {
$result .= fgets($fp, 1024);
}
fclose($fp);
 
<span>return</span> $result;
}</span>
Copy after login

6. Use the curl library. Before using the curl library, you may need to check whether the curl extension has been turned on in php.ini

<span>$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, &lsquo;http:<span>//www.ido321.com/');</span>
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
 
<span>echo</span> $file_contents;</span>
Copy after login

Original article first published: http://www.ido321.com/1297.html

Next article: CSS 3 display: detailed explanation of box type


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/921719.htmlTechArticlePHP: 6 GET and POST request sending methods, 6 get In the i94web blog, I tried Chang There are two social comment boxes, Yan and Duoshuo. Later, Changyan was abandoned because it was not safe. Whether it’s speaking freely...
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template