あるWEBサービスがあるのですが、
Javaでログイン認証をして内容を解析したいと思っています。
http://www.freeml.com/kimetaro/206897
合言葉(=パスワード)は[2016]としています。
Jsoupを用いて以下のように実装して、HTTP 302FOUNDが返ってきているので
(HTTP 200OKだとログイン失敗)
ログイン認証には成功しているのですが、
認証後にリダイレクトしているらしく、リダイレクト先を指定しても
認証前の画面しか返ってこない状況です。
どうしたら認証後のページの情報を取得できるでしょうか。
お忙しいところ申し訳ありませんがよろしくお願いいたします。
java
1import java.io.IOException; 2import java.util.HashMap; 3import java.util.Map; 4 5import org.jsoup.Connection.Method; 6import org.jsoup.Connection.Response; 7import org.jsoup.Jsoup; 8import org.jsoup.nodes.Document; 9import org.jsoup.nodes.Element; 10import org.jsoup.select.Elements; 11 12public class KimetaroAccess { 13 14 public static void main(String args[]){ 15 String ua = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"; 16 try { 17 Response res1 = Jsoup.connect("http://www.freeml.com/kimetaro/206897") 18 .userAgent(ua) 19 .execute(); 20 Elements elements = res1 21 .parse() 22 .getElementsByTag("input"); 23 24 Map<String, String> hiddens = new HashMap<>(); 25 for (Element el : elements) { 26 if (el.attr("type").equals("hidden") 27 && el.attr("name")!=null) { 28 hiddens.put(el.attr("name"), el.attr("value")); 29 } 30 } 31 hiddens.put("view_password", "2016"); 32 Response res2 = Jsoup.connect("http://www.freeml.com/ep.umzx/grid/Kimetaro/node/KimetaroViewAuthProcess/schedule_id/160681") 33 .userAgent(ua) 34 .cookies(res1.cookies()) 35 .data(hiddens) 36 .followRedirects(false) 37 .method(Method.POST) 38 .execute(); 39 Document timeline = Jsoup.connect("http://www.freeml.com/kimetaro/206897") 40 .userAgent(ua) 41 .cookies(res2.cookies()) 42 .referrer("http://www.freeml.com/ep.umzx/grid/Kimetaro/node/KimetaroViewAuthProcess/schedule_id/160681") 43 .get(); 44 System.out.println(timeline); 45 } catch (IOException e) { 46 e.printStackTrace(); 47 } 48 49 } 50 51}
回答1件
あなたの回答
tips
プレビュー