Ec (2); classHttpRequest {var $ sHostAdd; var $ sUri; var $ iPort; var $ sRequestHeader; var $ sResponse; functionHttpRequest ($ sUrl) {$ sPatternUrlPart ([a-z -. 0-9] +) (:( d +) {0, 1 }(. *) I; $ ar script ec (2); script
Class HttpRequest
{
Var $ sHostAdd;
Var $ sUri;
Var $ iPort;
Var $ sRequestHeader;
Var $ sResponse;
Function HttpRequest ($ sUrl ){
$ SPatternUrlPart = '/http: // ([a-z-. 0-9] +) (:( d +) {0, 1} (. *)/I ';
$ Armatchillpart = array ();
Preg_match ($ sPatternUrlPart, $ sUrl, $ armatchillpart );
$ This-> sHostAdd = gethostbyname ($ armatchillpart [1]);
If (empty ($ armatchillpart [4]) {
$ This-> sUri = '/';
} Else {
$ This-> sUri = $ armatchillpart [4];
}
If (empty ($ armatchillpart [3]) {
$ This-> iPort = 80;
} Else {
$ This-> iPort = $ armatchillpart [3];
}
$ This-> addRequestHeader ('host: '. $ armatchillpart [1]);
$ This-> addRequestHeader ('Connection: close ');
}
Function addRequestHeader ($ sHeader ){
$ This-> sRequestHeader. = trim ($ sHeader )."";
}
Function sendRequest ($ sMethod = 'get', $ sPostData = ''){
$ SRequest = $ sMethod. "". $ this-> sUri. "HTTP/1.1 ";
$ SRequest. = $ this-> sRequestHeader;
If ($ sMethod = 'post '){
$ SRequest. = "Content-Type: application/x-www-form-urlencoded ";
$ SRequest. = "Content-Length:". strlen ($ sPostData )."";
$ SRequest. = "";
$ SRequest. = $ sPostData ."";
}
$ SRequest. = "";
$ SockHttp = socket_create (AF_INET, SOCK_STREAM, SOL_TCP );
If (! $ SockHttp ){
Die ('socket _ create () failed! ');
}
$ ResSockHttp = socket_connect ($ sockHttp, $ this-> sHostAdd, $ this-> iPort );
If (! $ ResSockHttp ){
Die ('socket _ connect () failed! ');
}
Socket_write ($ sockHttp, $ sRequest, strlen ($ sRequest ));
$ This-> sResponse = '';
While ($ sRead = socket_read ($ sockHttp, 4096 )){
$ This-> sResponse. = $ sRead;
}
Socket_close ($ sockHttp );
}
Function getResponse (){
Return $ this-> sResponse;
}
Function getResponseBody (){
$ SPatternSeperate = '//';
$ ArMatchResponsePart = preg_split ($ sPatternSeperate, $ this-> sResponse, 2 );
Return $ arMatchResponsePart [1];
}
Function getResponseHead (){
$ SPatternSeperate = '//';
$ ArMatchResponsePart = preg_split ($ sPatternSeperate, $ this-> sResponse, 2 );
Return $ arMatchResponsePart [0];
}
}