I tried to access this url in my java program but I got this strange message instead of the page content as I was expecting.
How can I avoid this?
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>303 See Other</title>
</head>
<body>
<h1>See Other</h1>
<p>The answer to your request is located <a href="https://www.wikidata.org/wiki/Special:EntityData/P26">here</a>.</p>
</body>
</html>
In a browser though I can navigate there easily. Is there some function or library I can use to evoke that functionality from my java program?
for (String url : list_of_relation_URLs)
{
//System.out.println( url );
//go to relation url
String URL_czech = url;
System.out.println( url );
URL wikidata_page = new URL(URL_czech);
HttpURLConnection wiki_connection = (HttpURLConnection)wikidata_page.openConnection();
InputStream wikiInputStream = null;
try
{
// try to connect and use the input stream
wiki_connection.connect();
wikiInputStream = wiki_connection.getInputStream();
}
catch(IOException error)
{
// failed, try using the error stream
wikiInputStream = wiki_connection.getErrorStream();
}
// parse the input stream using Jsoup
Document docx = Jsoup.parse(wikiInputStream, null, wikidata_page.getProtocol()+"://"+wikidata_page.getHost()+"/");
System.out.println( docx.toString() );
}
I'm trying to do basically the opposite of what is going on here.
When you receive a 303 status code, you simply need to make a second request to the URL supplied with the 303.
The new URL is stored in the Location
header.
In your case, you will need to keep following until you get a different status code as you will be redirected two times.
303: Location:"https://www.wikidata.org/wiki/Special:EntityData/P26"
303: Location:"https://www.wikidata.org/wiki/Property:P26"
And yes... if you are using a HttpURLConnection
you can ask it to do this for you.
conn.setInstanceFollowRedirects(true);