Wenn Sie Java zum Zugriff auf eine URL verwenden und die URL eine Authentifizierung erfordert, können Sie nicht direkt darauf zugreifen, da Sie nicht angemeldet sind. Wie kann man dieses Problem lösen?
Die Methode besteht darin, Java zu verwenden, um die Anmeldung zu simulieren, die Cookie-Informationen nach der Anmeldung aufzuzeichnen und das Cookie zu senden, um bei der nächsten Anfrage die Identität anzugeben, sodass Sie mit Berechtigungen auf die URL zugreifen können.
Im Folgenden wird zunächst die Verwendung von Java zur Simulation der Anmeldung vorgestellt.
// 连接地址(通过阅读html源代码获得,即为登陆表单提交的URL) String surl = "http://login.goodjobs.cn/index.php/action/UserLogin"; /** * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using * java.net.URL and //java.net.URLConnection */ URL url = new URL(surl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); /** * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。 * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做: */ connection.setDoOutput(true); /** * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ... */ OutputStreamWriter out = new OutputStreamWriter(connection .getOutputStream(), "GBK"); //其中的memberName和password也是阅读html代码得知的,即为表单中对应的参数名称 out.write("memberName=myMemberName&password=myPassword"); // post的关键所在! // remember to clean up out.flush(); out.close(); // 取得cookie,相当于记录了身份,供下次访问时使用 String cookieVal = connection.getHeaderField("Set-Cookie");
Nach erfolgreicher Anmeldung können Sie auf andere URLs zugreifen.
String s = "http://user.goodjobs.cn/dispatcher.php/module/Resume/action/Preview"; //重新打开一个连接 url = new URL(s); HttpURLConnection resumeConnection = (HttpURLConnection) url .openConnection(); if (cookieVal != null) { //发送cookie信息上去,以表明自己的身份,否则会被认为没有权限 resumeConnection.setRequestProperty("Cookie", cookieVal); } resumeConnection.connect(); InputStream urlStream = resumeConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(urlStream)); String ss = null; String total = ""; while ((ss = bufferedReader.readLine()) != null) { total += ss; } IOUtils.write(total, new FileOutputStream("d:/index.html")); bufferedReader.close();
Mit der oben genannten Methode können Sie mit Berechtigungskontrolle auf URLs zugreifen. Die Idee besteht darin, die Anmeldung zu simulieren, ein Cookie zum Aufzeichnen der Identität abzurufen und das Cookie zur Angabe der Identität bei der nächsten Anfrage zu senden.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.
Weitere Artikel zu Java-simulierten Cookie-Anmeldevorgängen finden Sie auf der chinesischen PHP-Website!