Así que estoy tratando de hacer un bot de Discord que use una fuente RSS de Reddit para publicar información sobre nuevas publicaciones. Estoy haciendo esto en Java y actualmente estoy trabajando para extraer la fuente RSS. El problema es que Reddit rechaza cualquier agente de usuario que ROME use de forma predeterminada, parece que no puedo encontrar una alternativa factible a ROME aparte de implementar una yo mismo, y la única solución que puedo encontrar para configurar un agente de usuario personalizado en ROME usa un montón de funciones obsoletas . ¿Cómo configuro un agente de usuario personalizado en ROME?
Solucioné mi propio problema simplemente tomando un InputStream estándar del feed y construyendo el feed a través de eso con SyndFeed feed = input.build(new XmlReader(stream));
¿ROME permite personalizar el agente de usuario?
De lo contrario, debería poder realizar solicitudes JSON de solo lectura sin necesidad de autenticación, por ejemplo, "GET https://www.reddit.com/r/funny/new.json "
Con Apache HttpClient 4 y Rome 1.7.0 puede configurar la cadena de agente de usuario de esta manera:
CloseableHttpClient customClient = HttpClients.custom() .setUserAgent("Your custom user agent string here") .build(); String url = "http://stackoverflow.com/feeds/tag?tagnames=rome"; try (CloseableHttpClient client = customClient) { HttpUriRequest request = new HttpGet(url); try (CloseableHttpResponse response = client.execute(request); InputStream stream = response.getEntity().getContent()) { SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(stream)); System.out.println(feed.getTitle()); } }
Son más líneas de código que antes, pero más fáciles de configurar. Han desaprobado el viejo Rome Fetcher .