Пример #1
0
 function testJsonPost()
 {
     $http = new HttpClient('http://localhost/coredev_testserver/post_json.php');
     $http->setContentType('application/json');
     $http->setDebug(true);
     $res = $http->post(array('str' => 'abc 123'));
     $this->assertEquals($res, 'str=abc+123');
 }
Пример #2
0
 public static final function sendSms($path, $apikey, $encoded_text, $mobile, $tpl_id = '', $encoded_tpl_value = '')
 {
     $client = new HttpClient(self::HOST);
     $client->setDebug(false);
     if (!$client->post($path, array('apikey' => $apikey, 'text' => $encoded_text, 'mobile' => $mobile, 'tpl_id' => $tpl_id, 'tpl_value' => $encoded_tpl_value))) {
         return '-10000';
     } else {
         return self::__replyResult($client->getContent());
     }
 }
Пример #3
0
 public static final function sendSms($user, $password, $content, $mobiles)
 {
     $client = new HttpClient(self::HOST);
     $client->setDebug(false);
     date_default_timezone_set('PRC');
     if (!$client->post('/sdk/send', array('accName' => $user, 'accPwd' => strtoupper($password), 'bizId' => date('YmdHis'), 'content' => mb_convert_encoding($content, 'UTF-8', 'UTF-8'), 'aimcodes' => $mobiles, 'dataType' => "xml"))) {
         return '-10000';
     } else {
         return self::__replyResult($client->getContent());
     }
 }
 function preLogUser($sessionId)
 {
     require_once AJXP_BIN_FOLDER . "/class.HttpClient.php";
     $client = new HttpClient($this->getOption("REMOTE_SERVER"), $this->getOption("REMOTE_PORT"));
     $client->setDebug(false);
     if ($this->getOption("REMOTE_USER") != "") {
         $client->setAuthorization($this->getOption("REMOTE_USER"), $this->getOption("REMOTE_PASSWORD"));
     }
     $client->setCookies(array($this->getOption("REMOTE_SESSION_NAME") ? $this->getOption("REMOTE_SESSION_NAME") : "PHPSESSID" => $sessionId));
     $result = $client->get($this->getOption("REMOTE_URL"), array("session_id" => $sessionId));
     if ($result) {
         $user = $client->getContent();
         if ($this->autoCreateUser()) {
             AuthService::logUser($user, "", true);
         } else {
             // If not auto-create but the user exists, log him.
             if ($this->userExists($user)) {
                 AuthService::logUser($user, "", true);
             }
         }
     }
 }
Пример #5
0
 /**
  * Preferences are handled in _PassUser
  */
 function checkPass($password)
 {
     $userid = $this->_userid;
     if (!loadPhpExtension('openssl')) {
         trigger_error(sprintf(_("The PECL %s extension cannot be loaded."), "openssl") . sprintf(_(" %s AUTH ignored."), 'Facebook'), E_USER_WARNING);
         return $this->_tryNextUser();
     }
     $web = new HttpClient("www.facebook.com", 80);
     if (DEBUG & _DEBUG_LOGIN) {
         $web->setDebug(true);
     }
     // collect cookies from http://www.facebook.com/login.php
     $web->persist_cookies = true;
     $web->cookie_host = 'www.facebook.com';
     $firstlogin = $web->get("/login.php");
     if (!$firstlogin) {
         if (DEBUG & (_DEBUG_LOGIN | _DEBUG_VERBOSE)) {
             trigger_error(sprintf(_("Facebook connect failed with %d %s"), $web->status, $web->errormsg), E_USER_WARNING);
         }
     }
     // Switch from http to https://login.facebook.com/login.php
     $web->port = 443;
     $web->host = 'login.facebook.com';
     if (!($retval = $web->post("/login.php", array('user' => $userid, 'pass' => $password)))) {
         if (DEBUG & (_DEBUG_LOGIN | _DEBUG_VERBOSE)) {
             trigger_error(sprintf(_("Facebook login failed with %d %s"), $web->status, $web->errormsg), E_USER_WARNING);
         }
     }
     $this->_authmethod = 'Facebook';
     if (DEBUG & _DEBUG_LOGIN) {
         trigger_error(get_class($this) . "::checkPass => {$retval}", E_USER_WARNING);
     }
     if ($retval) {
         $this->_level = WIKIAUTH_USER;
     } else {
         $this->_level = WIKIAUTH_ANON;
     }
     return $this->_level;
 }
 function _getMatches($word_list)
 {
     $xml = "";
     // Setup HTTP Client
     $client = new HttpClient('www.google.com');
     $client->setUserAgent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR');
     $client->setHandleRedirects(false);
     $client->setDebug(false);
     // Setup XML request
     $xml .= '<?xml version="1.0" encoding="utf-8" ?>';
     $xml .= '<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">';
     $xml .= '<text>' . htmlentities($word_list) . '</text></spellrequest>';
     // Execute HTTP Post to Google
     if (!$client->post('/tbproxy/spell?lang=' . $this->lang, $xml)) {
         $this->errorMsg[] = 'An error occurred: ' . $client->getError();
         return array();
     }
     // Grab and parse content
     $xml = $client->getContent();
     preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\\/c>/', $xml, $matches, PREG_SET_ORDER);
     return $matches;
 }
Пример #7
0
 /**
  * Loads input data from RSS or Atom feeds into NewsItem entries
  */
 function load($data)
 {
     if (is_array($data)) {
         $this->addItems($data);
         return;
     }
     if (is_url($data)) {
         $http = new HttpClient($data);
         if ($this->getDebug()) {
             $http->setDebug();
         }
         $data = $http->getBody();
     }
     if (strpos($data, '<rss ') !== false) {
         $feed = new RssReader();
     } else {
         if (strpos($data, '<feed ') !== false) {
             $feed = new AtomReader();
         } else {
             echo 'NewsFeed->load error: unhandled feed: ' . substr($data, 0, 100) . ' ...' . ln();
             return false;
         }
     }
     if ($this->getDebug()) {
         $feed->setDebug();
     }
     $feed->parse($data);
     $this->title = $feed->getTitle();
     $this->addItems($feed->getItems());
 }
 public function switchAction($action, $httpVars, $fileVars)
 {
     //AJXP_Logger::logAction("DL file", $httpVars);
     $repository = ConfService::getRepository();
     if (!$repository->detectStreamWrapper(false)) {
         return false;
     }
     $plugin = AJXP_PluginsService::findPlugin("access", $repository->getAccessType());
     $streamData = $plugin->detectStreamWrapper(true);
     $dir = AJXP_Utils::decodeSecureMagic($httpVars["dir"]);
     $destStreamURL = $streamData["protocol"] . "://" . $repository->getId() . $dir . "/";
     if (isset($httpVars["file"])) {
         $parts = parse_url($httpVars["file"]);
         $getPath = $parts["path"];
         $basename = basename($getPath);
     }
     if (isset($httpVars["dlfile"])) {
         $dlFile = $streamData["protocol"] . "://" . $repository->getId() . AJXP_Utils::decodeSecureMagic($httpVars["dlfile"]);
         $realFile = file_get_contents($dlFile);
         if (empty($realFile)) {
             throw new Exception("cannot find file {$dlFile} for download");
         }
         $parts = parse_url($realFile);
         $getPath = $parts["path"];
         $basename = basename($getPath);
     }
     switch ($action) {
         case "external_download":
             if (!ConfService::currentContextIsCommandLine() && ConfService::backgroundActionsSupported()) {
                 $unixProcess = AJXP_Controller::applyActionInBackground($repository->getId(), "external_download", $httpVars);
                 if ($unixProcess !== null) {
                     @file_put_contents($destStreamURL . "." . $basename . ".pid", $unixProcess->getPid());
                 }
                 AJXP_XMLWriter::header();
                 AJXP_XMLWriter::triggerBgAction("reload_node", array(), "Triggering DL ", true, 2);
                 AJXP_XMLWriter::close();
                 session_write_close();
                 exit;
             }
             require_once AJXP_BIN_FOLDER . "/class.HttpClient.php";
             $mess = ConfService::getMessages();
             session_write_close();
             $client = new HttpClient($parts["host"]);
             $collectHeaders = array("ajxp-last-redirection" => "", "content-disposition" => "", "content-length" => "");
             $client->setHeadersOnly(true, $collectHeaders);
             $client->setMaxRedirects(8);
             $client->setDebug(false);
             $client->get($getPath);
             $pidHiddenFileName = $destStreamURL . "." . $basename . ".pid";
             if (is_file($pidHiddenFileName)) {
                 $pid = file_get_contents($pidHiddenFileName);
                 @unlink($pidHiddenFileName);
             }
             AJXP_Logger::debug("COLLECTED HEADERS", $client->collectHeaders);
             $collectHeaders = $client->collectHeaders;
             $totalSize = -1;
             if (!empty($collectHeaders["content-disposition"]) && strstr($collectHeaders["content-disposition"], "filename") !== false) {
                 $ar = explode("filename=", $collectHeaders["content-disposition"]);
                 $basename = trim(array_pop($ar));
                 $basename = str_replace("\"", "", $basename);
                 // Remove quotes
             }
             if (!empty($collectHeaders["content-length"])) {
                 $totalSize = intval($collectHeaders["content-length"]);
                 AJXP_Logger::debug("Should download {$totalSize} bytes!");
             }
             if ($totalSize != -1) {
                 $node = new AJXP_Node($destStreamURL . $basename);
                 AJXP_Controller::applyHook("node.before_create", array($node, $totalSize));
             }
             $qData = false;
             if (!empty($collectHeaders["ajxp-last-redirection"])) {
                 $newParsed = parse_url($collectHeaders["ajxp-last-redirection"]);
                 $client->host = $newParsed["host"];
                 $getPath = $newParsed["path"];
                 if (isset($newParsed["query"])) {
                     $qData = parse_url($newParsed["query"]);
                 }
             }
             $tmpFilename = $destStreamURL . $basename . ".dlpart";
             $hiddenFilename = $destStreamURL . "__" . $basename . ".ser";
             $filename = $destStreamURL . $basename;
             $dlData = array("sourceUrl" => $getPath, "totalSize" => $totalSize);
             if (isset($pid)) {
                 $dlData["pid"] = $pid;
             }
             //file_put_contents($hiddenFilename, serialize($dlData));
             $fpHid = fopen($hiddenFilename, "w");
             fputs($fpHid, serialize($dlData));
             fclose($fpHid);
             $client->redirect_count = 0;
             $client->setHeadersOnly(false);
             $destStream = fopen($tmpFilename, "w");
             if ($destStream !== false) {
                 $client->writeContentToStream($destStream);
                 $client->get($getPath, $qData);
                 fclose($destStream);
             }
             rename($tmpFilename, $filename);
             unlink($hiddenFilename);
             if (isset($dlFile) && isset($httpVars["delete_dlfile"]) && is_file($dlFile)) {
                 AJXP_Controller::applyHook("node.before_change", array(new AJXP_Node($dlFile)));
                 unlink($dlFile);
                 AJXP_Controller::applyHook("node.change", array(new AJXP_Node($dlFile), null, false));
             }
             AJXP_Controller::applyHook("node.change", array(null, new AJXP_Node($filename), false));
             AJXP_XMLWriter::header();
             AJXP_XMLWriter::triggerBgAction("reload_node", array(), $mess["httpdownloader.8"]);
             AJXP_XMLWriter::close();
             exit;
             break;
         case "update_dl_data":
             $file = AJXP_Utils::decodeSecureMagic($httpVars["file"]);
             header("text/plain");
             if (is_file($destStreamURL . $file)) {
                 echo filesize($destStreamURL . $file);
             } else {
                 echo "stop";
             }
             exit;
             break;
         case "stop_dl":
             $newName = "__" . str_replace(".dlpart", ".ser", $basename);
             $hiddenFilename = $destStreamURL . $newName;
             $data = @unserialize(@file_get_contents($hiddenFilename));
             header("text/plain");
             AJXP_Logger::debug("Getting {$hiddenFilename}", $data);
             if (isset($data["pid"])) {
                 $process = new UnixProcess();
                 $process->setPid($data["pid"]);
                 $process->stop();
                 unlink($hiddenFilename);
                 unlink($destStreamURL . $basename);
                 echo 'stop';
             } else {
                 echo 'failed';
             }
             exit;
             break;
         default:
             break;
     }
     return true;
 }
Пример #9
0
 /**
  * Performs check of OpenID identity.
  *
  * This is the first step of OpenID authentication process.
  * On success the function does not return (it does HTTP redirection to
  * server and exits). On failure it returns false.
  *
  * @param bool $immediate enables or disables interaction with user
  * @param string $id OpenID identity
  * @param string $returnTo HTTP URL to redirect response from server to
  * @param string $root HTTP URL to identify consumer on server
  * @param mixed $extensions extension object or array of extensions objects
  * @param Zend_Controller_Response_Abstract $response an optional response
  *  object to perform HTTP or HTML form redirection
  * @return bool
  */
 function _checkId($immediate, $id, $returnTo = null, $root = null, $extensions = null, $response = null)
 {
     $this->_setError('');
     /*if (!Zend_OpenId::normalize($id)) {
           $this->_setError("Normalisation failed");
           return false;
       }*/
     $claimedId = $id;
     if (!$this->_discovery($id, $server, $version)) {
         $this->_setError("Discovery failed");
         return false;
     }
     if (!$this->_associate($server, $version)) {
         $this->_setError("Association failed");
         return false;
     }
     if (!$this->_getAssociation($server, $handle, $macFunc, $secret, $expires)) {
         /* Use dumb mode */
         unset($handle);
         unset($macFunc);
         unset($secret);
         unset($expires);
     }
     $params = array();
     if ($version >= 2.0) {
         //$params['openid.ns'] = Zend_OpenId::NS_2_0;
     }
     $params['openid.mode'] = $immediate ? 'checkid_immediate' : 'checkid_setup';
     $params['openid.identity'] = $id;
     $params['openid.claimed_id'] = $claimedId;
     if ($version <= 2.0) {
         global $request;
         $session = $request->getSessionVar('openid');
         $request->setSessionVar('identity', $id);
         $request->setSessionVar('claimed_id', $claimedId);
     }
     if (isset($handle)) {
         $params['openid.assoc_handle'] = $handle;
     }
     //$params['openid.return_to'] = Zend_OpenId::absoluteUrl($returnTo);
     // See lib/WikiUser/FaceBook.php how to handle http requests
     $web = new HttpClient("{$server}", 80);
     if (DEBUG & _DEBUG_LOGIN) {
         $web->setDebug(true);
     }
     if (empty($root)) {
         //$root = Zend_OpenId::selfUrl();
         if ($root[strlen($root) - 1] != '/') {
             $root = dirname($root);
         }
     }
     if ($version >= 2.0) {
         $params['openid.realm'] = $root;
     } else {
         $params['openid.trust_root'] = $root;
     }
     /*if (!Zend_OpenId_Extension::forAll($extensions, 'prepareRequest', $params)) {
           $this->_setError("Extension::prepareRequest failure");
           return false;
       }
       */
     //Zend_OpenId::redirect($server, $params, $response);
     return true;
 }
Пример #10
0
<?php

include 'HttpClient.class.php';
//抓取页面的内容
$contents = HttpClient::quickGet('http://www.baidu.com/');
var_dump($contents);
//post请求某一个接口,返回的信息赋值给$res
$res = HttpClient::quickPost('http://example.com/sms.php', array('name' => 'kevin.liu', 'phone' => '18201042042'));
//可能有一些请求访问会出问题,则需要加一个userAgent
$client = new HttpClient('example.com');
$client->setDebug(true);
$client->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207');
if (!$client->get('/')) {
    die('An error occurred: ' . $client->getError());
}
$contents = $client->getContent();
//还有一些情况是:在采集数据的时候必须先登陆,则可以先模拟登陆
$client = new HttpClient('example.com');
$client->post('/login.php', array('username' => 'kevin', 'password' => '123456'));
if (!$client->get('/private.php')) {
    //采集数据的目标地址
    die('An error occurred: ' . $client->getError());
}
$pageContents = $client->getContent();
Пример #11
0
 private function postRequest($url, $cookies, $protocol)
 {
     $httpClient = new HttpClient($this->hostName);
     $httpClient->setDebug(true);
     try {
         $httpClient->setUserAgent("PaiPai API Invoker/PHP " . PHP_VERSION);
         if (!$httpClient->post($url, $this->getParams())) {
             return '<p>Request failed!</p>';
         } else {
             return $httpClient->getContent();
         }
     } catch (Exception $e) {
     }
 }