So I'm trying to make a Discord bot that uses a Reddit RSS feed to post some info about new posts. I'm making this in Java and am currently working on pulling the RSS feed. Trouble is, Reddit rejects whatever user agent ROME uses by default, I cannot seem to find a feasible alternative to ROME short of implementing one myself, and the only solution I can find to set a custom user agent in ROME uses a bunch of deprecated functionality. How do I set a custom user agent in ROME?
Asked
Active
Viewed 592 times
3 Answers
0
I fixed my own problem by simply grabbing a standard InputStream of the feed and building the feed through that with SyndFeed feed = input.build(new XmlReader(stream));

Troels Jessen
- 125
- 1
- 10
0
Does ROME allow for customizing the user agent?
If not, you should be able to make read-only JSON requests without needing authentication, for example "GET https://www.reddit.com/r/funny/new.json"

Lincoln Bergeson
- 3,301
- 5
- 36
- 53
-
It did once, but I cannot figure out how to do it with the current versions. As I posted below, I figured out I could just grab the reply as a generic InputStream and feed that to the XmlReader, meaning I can set the header to whatever I want. – Troels Jessen Apr 29 '17 at 08:47
0
With Apache HttpClient 4 and Rome 1.7.0 you can set the user agent string like this:
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());
}
}
It is more lines of code than before, but easier to configure. They've deprecated the old Rome Fetcher.

janih
- 2,214
- 2
- 18
- 24