Я пытаюсь использовать twitter streaming api. Я мог бы успешно фильтр твитов с помощью завиток, как указано here:twitter streaming api - установить фильтр в http post request (apache httpcomponents)
curl -d @tracking http://stream.twitter.com/1/statuses/filter.json -u <user>:<pass>
где tracking
представляет собой обычный файл с содержанием:
track=Berlin
Теперь я попытался сделать то же самое в JavaSE, используя апача HTTPComponents:
UsernamePasswordCredentials creds = new UsernamePasswordCredentials(<user>, <pass>);
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, creds);
HttpPost httpPost = new HttpPost("http://stream.twitter.com/1/statuses/filter.json");
HttpParams params = new BasicHttpParams();
params = params.setParameter("track", "Berlin");
httpPost.setParams(params);
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
String t;
BufferedReader br = new BufferedReader(new InputStreamReader(instream));
while(true) {
t = br.readLine();
if(t != null) {
linkedQueue.offer(t);
}
}
}
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
finally{
httpClient.getConnectionManager().shutdown();
}
Когда я бегу, что я получаю:
No filter parameters found. Expect at least one parameter: follow track
как единая запись в моем linkedQueue
. Кажется, api хочет параметр в другой форме, но не может найти никакого намека на документацию. Может ли кто-нибудь поделиться опытом с api или увидеть любую другую проблему с кодом? Благодаря!
EDIT Внесение параметра фильтра в параметры было плохой идеей. Как это почтовые данные, он должен быть определен как Entity
, прежде чем запрос делается:
StringEntity postEntity = new StringEntity("track=Berlin", "UTF-8");
postEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(postEntity);
Вот то, что я делаю неправильно. Спасибо Брайан!
Благодарим Брайана за вашу быструю помощь, вы правы. Мне нужно rtfm ... – rdoubleui