关于用JAVA编写程序,发送帐号和密码后登陆其它网站的问题(仅有十分,希望高人可以帮我)

LVMINGWEI 2007-08-03 02:01:48
/*
*仅有十分了,希望哪位大侠可以帮我,麻烦了,谢谢
*我这个程序是想登陆一个网站
*首先我登陆http://xiaonei.com/Login.do
*发送用户名和密码,之后登陆成功获得一个Cookie的值,把这个值放到sessionId字符串中
*接着我发送sessionId字符串进入这个网站的另一个页面中,为了证明我是以会员方式进入成功,我让他返回这个页面的代码
*可是返回给我的是让我登陆才能观看本页面的代码,说明之前的登陆不成功,可是我之前明明已经登陆成功了啊
*呵呵,麻烦帮我看一下错在哪里,需要怎么改,或者帮忙写一个正确的

*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.net.*;
public class Login extends JFrame implements ActionListener
{
JLabel l1 = new JLabel("请输入您要查询的文件的URL地址: ");
JTextField t1 = new JTextField("",20);
JTextArea t2 = new JTextArea();
JButton b1 = new JButton("查询");
JButton b2 = new JButton("退出");
String sessionId = null;

public Login() //这里只是制作外观,没有用
{
t2.setRows(25);
t2.setColumns(33);
t2.setLineWrap(true);
this.add(l1);
this.add(t1);
this.add(b1);
this.add(b2);
this.add(new JScrollPane(t2));
b1.addActionListener(this);
b2.addActionListener(this);
this.setLayout(new FlowLayout());
this.setSize(400,560);
this.setTitle("IE查询");
this.setVisible(true);

}
public void Login_one() //首先登陆到这个网站,并获得Cookie的值sessionId
{

try
{
URL ur = new URL("http://xiaonei.com/Login.do");
HttpURLConnection connection= (HttpURLConnection) ur.openConnection();//连接服务器
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
//向服务器发送这个信息,信息内容是这个网站的登陆帐号和密码
out.flush();
out.close();
//connection.getInputStream();
InputStream is = connection.getInputStream();
//获得输入流
String cookieVal = connection.getHeaderField("Set-Cookie"); //获得COOKIE的值
System.out.println(cookieVal);
if(cookieVal != null)
{
sessionId = cookieVal.substring(0, cookieVal.indexOf(";")); //将值整理一下放到sessionId字符串中
//这里在向网站提交错误密码的时候,也会返回一个字符串,与正确时返回的相同,让我很纳闷,是否是这里出现了问题
}



System.out.println("成功");

//向控制台输出连接地址,这里如果提交的用户名和密码正确,那么这里应该输出http://xiaonei.com/Home.do
//如果密码错误,应该还是停留在登陆页面,那么地址输出应该是 http://xiaonei.com/Login.do
//这一步骤已经成功了,输出的是http://xiaonei.com/Home.do,只要你把提交的密码一改,就会返回登陆地址
System.out.println(connection.getURL());
}
catch(Exception e)
{
System.out.println(e);
}
}
public void display() //在获得seeionID后,进入这个页面,做好连接后发送seeionID,以确认我的身份是会员,可以查看本个页面
{

try
{
URL url = new URL("http://group.xiaonei.com/GetThread.do?id=304097886&parentpage=0&curpage=0&label=&tribeId=43864");//进入这个页面
HttpURLConnection huc= (HttpURLConnection) url.openConnection();
if(sessionId != null) //发送Cookie的值seeionID
{
huc.setRequestProperty("Cookie", sessionId);
}
huc.connect();//建立连接
//获得输入流
InputStream is = huc.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"utf-8")); String inputLine;
String mm = new String();
System.out.println("本页面代码:");

//以下是在控制台显示这个页面的代码
while((inputLine=in.readLine())!=null)
{
System.out.println(inputLine);
mm=mm+inputLine;
if(inputLine.equals("密码"))
t1.setText(inputLine);
}
mm.getBytes("ISO8859_1");
t2.setText(mm);

System.out.println(huc.getURL());
System.out.println(sessionId);

}

catch (Exception e)
{
System.out.println(e);
}

}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
Login_one(); //当按下b1这个按钮的时候(b1按钮是程序里的<查找>按钮)
display();
}
if(e.getSource()==b2)
{
System.exit(0);
}
}
public static void main(String[] args)
{
new Login();
}
}
...全文
379 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LVMINGWEI 2009-08-24
  • 打赏
  • 举报
回复
我是谁?我的号码是多少
LVMINGWEI 2009-08-24
  • 打赏
  • 举报
回复
测试
LVMINGWEI 2007-08-03
  • 打赏
  • 举报
回复
我知道怎么弄了,谢谢
南南北北 2007-08-03
  • 打赏
  • 举报
回复
没太仔细看你的代码,好长。
你发送给服务器消息时,huc.setRequestProperty("Cookie", sessionId);你知道服务器要读一个叫"Cookie"的参数,取得的值是sessionId? 以前看过好象有默认叫"JSessionId"的。
LVMINGWEI 2007-08-03
  • 打赏
  • 举报
回复
仅有十分,希望高人可以帮我

259

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧