Problème de configuration de proxy [Fermé]

Signaler
-
Bonjour,

dans le cadre d'un projet, je suis amenée à récupérer des tweets via l'API streaming de Twitter.

Le bout de code ci-dessous fonctionne parfaitement chez moi, il me retourne bien les tweets qui contiennent les mots clés passés en paramètre.

Un problème survient lorsque je teste mon application à la fac. En effet, la fac utilise un proxy, il met donc impossible de créer une connexion par la socket vers twitter streaming, l'appel de la fonction fsockopen échoue.

Je souhaiterai donc savoir comment paramétrer le proxy de la fac pour pouvoir me connecter à la ressource streaming de twitter.


public function start(array $_keywords)
{
while(1)
{

$fp = fsockopen("ssl://stream.twitter.com", 443, $errno, $errstr, 30);
if (!$fp)
{
echo "ERROR: Twitter Stream Error: failed to open socket";
} else
{

//
// build the data and store it so we can get a length
//
$data = 'track=' . rawurlencode(implode($_keywords, ','));

// store the current timestamp
//


$this->m_oauth_timestamp = time();

//
// generate the base string based on all the data
//
$base_string = 'POST&' .
rawurlencode('https://stream.twitter.com/1.1/statuses/filter.json') . '&' .
rawurlencode('oauth_consumer_key=' . $this->m_oauth_consumer_key . '&' .
'oauth_nonce=' . $this->m_oauth_nonce . '&' .
'oauth_signature_method=' . $this->m_oauth_signature_method . '&' .
'oauth_timestamp=' . $this->m_oauth_timestamp . '&' .
'oauth_token=' . $this->m_oauth_token . '&' .
'oauth_version=' . $this->m_oauth_version . '&' .
$data);

//
// generate the secret key to use to hash
//


$secret = rawurlencode($this->m_oauth_consumer_secret) . '&' .
rawurlencode($this->m_oauth_token_secret);

//
// generate the signature using HMAC-SHA1
//
// hash_hmac() requires PHP >= 5.1.2 or PECL hash >= 1.1
//

$raw_hash = hash_hmac('sha1', $base_string, $secret, true);

//
// base64 then urlencode the raw hash
//
$this->m_oauth_signature = rawurlencode(base64_encode($raw_hash));

//
// build the OAuth Authorization header
//
$oauth = 'OAuth oauth_consumer_key="' . $this->m_oauth_consumer_key . '", ' .
'oauth_nonce="' . $this->m_oauth_nonce . '", ' .
'oauth_signature="' . $this->m_oauth_signature . '", ' .
'oauth_signature_method="' . $this->m_oauth_signature_method . '", ' .
'oauth_timestamp="' . $this->m_oauth_timestamp . '", ' .
'oauth_token="' . $this->m_oauth_token . '", ' .
'oauth_version="' . $this->m_oauth_version . '"';

//
// build the request
//
$request = "POST /1.1/statuses/filter.json HTTP/1.1\r\n";
$request .= "Host: stream.twitter.com\r\n";
$request .= "Authorization: " . $oauth . "\r\n";
$request .= "Content-Length: " . strlen($data) . "\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
$request .= $data;

//
// write the request
//

fwrite($fp, $request);

//
// set it to non-blocking
//
stream_set_blocking($fp, 0);


while(!feof($fp))
{
$read = array($fp);
$write = null;
$except = null;

//
// select, waiting up to 10 minutes for a tweet; if we don't get one, then
// then reconnect, because it's possible something went wrong.
//
$res = stream_select($read, $write, $except, 600, 0);
if ( ($res == false) || ($res == 0) )
{
break;
}

//
// read the JSON object from the socket
//
$json = fgets($fp);

//
// look for a HTTP response code
//
if (strncmp($json, 'HTTP/1.1', 8) == 0)
{
$json = trim($json);
if ($json != 'HTTP/1.1 200 OK')
{
echo 'ERROR: ' . $json . "\n";
return false;
}
}

//
// if there is some data, then process it
//
if ( ($json !== false) && (strlen($json) > 0) )
{
//
// decode the socket to a PHP array
//
$data = json_decode($json, true);
if ($data)
{
//
// process it
//
$this->process_tweet($data,$_keywords);
}
}
}
}

fclose($fp);
}

return;
}

Merci d'avance pour vos réponses.