Here is a working example of how to do /track: $count = 1; $startparsing = false;
$keyword_needles[] = 'keyword1'; $keyword_needles[] = 'keyword2'; $keyword_needles[] = 'keyword3'; $keyword_needles[] = 'keyword4'; // if your keywords have spaces, they must be urlencoded (twitter does not support phrases, only the first keyword will be used, the space character and after will be ignored) foreach ($keyword_needles AS $i=>$needle) { $keyword_needles[$i] = urlencode($needle); } $poststr = 'track=' . implode(',', $keyword_needles); $fp = fsockopen("stream.twitter.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)\n"; } else { $out = "POST /track.json HTTP/1.1\r\n"; $out .= "Host: stream.twitter.com\r\n"; $out .= "User-Agent: YourUserAgent\r\n"; $out .= "Referer: http://yourdomain.com\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Authorization: Basic " . base64_encode("username:password")."\r\n"; $out .= "Content-length: " . strlen($poststr) . "\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= $poststr . "\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $line = fgets($fp, 4096); if ($startparsing) { if (trim($line) != '') { //echo trim($line) . "\n"; $tweet_obj = json_decode(trim($line)); // do your stuff here } } else { // view the header lines: uncomment the below line //echo trim($line) . "\n"; $header_arr[] = $line; $headercount = count($header_arr)-1; if (trim($header_arr[$headercount]) == '') { $startparsing = true; $count = 1; unset($header_arr, $headercount); } } if (trim($line) != '') $count++; } fclose($fp); } On Mon, Jul 27, 2009 at 11:18 AM, Joseph <northwest...@gmail.com> wrote: > > I am trying to use the track streaming API, but I'm having trouble > with the syntax. The example shows how to use a tracking list stored > in a file in the format: track = word1, word2, etc.. > > I tried the following (following a successful fsockopen call to > stream.twitter.api: > > POST /track.json track = Palin, #fubar HTTP/1.1 Host: > stream.twitter.com User-Agent: UserAgent Authorization: Basic > cGXybmFzc3TzZGV2OlBhcm5hMzT1Mzl4MDMz Connection: Close > > and I am getting the following error code: HTTP/1.1 400 Bad Request > > The actual relevant test PHP code is: > > $fp = fsockopen($url, 80, $errno, $errstr, 30); > if (!$fp) { > echo "$errstr ($errno)\n"; > } else { > echo "file handle: ".$fp."<br/>"; > $header = "POST /track.json track = $trackTerms HTTP/1.1\r\n"; > $header .= "Host: stream.twitter.com\r\n"; > $header .= "User-Agent: UserAgent\r\n"; > $header .= "Authorization: Basic " . base64_encode($twitUsername . > ':' . $twitPwd)."\r\n"; > $header .= "Connection: Close\r\n\r\n"; > echo $header."<br/>"; > fwrite($fp, $header); > $line = fgets($fp, 4096); > echo $line; > fclose($fp); > } >