本人想用JAVA实现sina博客发文章:
目前流程:
1.通过HttpClient实现sina博客认证
2.通过HttpClient实现sina博客发文章上面操作问题:
过程1已经通过
过程2好像重新开启会话请求我如何把认证和发贴请求搞到一个会话中去谢谢指点
目前流程:
1.通过HttpClient实现sina博客认证
2.通过HttpClient实现sina博客发文章上面操作问题:
过程1已经通过
过程2好像重新开启会话请求我如何把认证和发贴请求搞到一个会话中去谢谢指点
HttpClient httpClient = new HttpClient();
String url = "http://login.sina.com.cn/hd/signin.php";
PostMethod postMethod = new PostMethod(url);
// 填入各个表单域的值
//设置sina博客用户名
NameValuePair[] data = { new NameValuePair("username", "bishimianshi"),
//设置sina博客密码
new NameValuePair("password", "007521"),
//设置其他字段
new NameValuePair("entry", "blog"),
new NameValuePair("act", "1"),
};
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
// 执行postMethod
int statusCode;
try {
// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
statusCode = httpClient.executeMethod(postMethod);
System.out.println("statusCode:"+statusCode);
//获取第一次请求返回的头部
Header[] heard = postMethod.getResponseHeaders();
System.out.println("====================heard======================");
for(int i = 0;i<heard.length; i ++)
{
System.out.println(heard[i].getName()+"||"+heard[i].getValue());
}
System.out.println("====================heard======================");
//获取第一次请求返回的内容
byte[] responseBody = postMethod.getResponseBody();
System.out.println("=================body============");
System.out.println(new String(responseBody));
System.out.println("=================body============");
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}sina认证通过之后,根据返回的信息,接下来是一个跳转页面,跳转的页面是根绝window.location.replace("xxxxxxxxxxxx");实现的。跳之后才是我的sina博客的内容,我改如何发帖呢。谢谢高手。、
// 构造HttpClient的实例
HttpClient httpClient = new HttpClient(); String url = "http://login.sina.com.cn/hd/signin.php";
PostMethod postMethod = new PostMethod(url);
// 填入各个表单域的值
//设置sina博客用户名
NameValuePair[] data = { new NameValuePair("username", "bishimianshi"),
//设置sina博客密码
new NameValuePair("password", "007521"),
//设置其他字段
new NameValuePair("entry", "blog"),
new NameValuePair("act", "1"),
};
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
// 执行postMethod
int statusCode;
try {
// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
statusCode = httpClient.executeMethod(postMethod);
System.out.println("statusCode:"+statusCode); //获取第一次请求返回的头部
Header[] heard = postMethod.getResponseHeaders();
System.out.println("====================heard======================");
for(int i = 0;i <heard.length; i ++)
{
System.out.println(heard[i].getName()+"||"+heard[i].getValue());
}
System.out.println("====================heard======================"); //获取第一次请求返回的内容
byte[] responseBody = postMethod.getResponseBody();
System.out.println("=================body============");
System.out.println(new String(responseBody));
System.out.println("=================body============"); } catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
有时间可以去我的JAVAEYE看看那4篇文章
http://zhoujingxian.javaeye.com/category/74680这次的项目就是用的HttpClient维护的登录模块
先说下思路
postMethod.getResponseHeaders() 获取HTTP头部, 在头部中保存着Cookie值, 把这个值存下来, 下次发送时再把这个值赋进去HTTPClient好像自己本身可以存这个值,只要是在同一个socket中, 好久不用,记不清了.