自动往iteyeblog发帖,原来可以,现在怎么不好用了,贴出代码,请高手帮忙分析...

开始的时候是好用的,一段时间后不能用了,不知道怎么回事,下面是开始好用时候的代码


package function.post;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class IteyePost {


public static void main(String args[]) throws Exception, Exception{

IteyePost ia= new IteyePost();
ia.send("题目2","内容内容内容内容内容内容内容"); //发帖方法

}

private void send(String titlett,String content) throws Exception {

HttpClient httpclient = new DefaultHttpClient();
// 这一行必须要加,否则服务器无法获取登陆状态
HttpClientParams.setCookiePolicy(httpclient.getParams(),CookiePolicy.BROWSER_COMPATIBILITY);

CookieStore cookieStore = new BasicCookieStore();
// Create local HTTP context
HttpContext localContext = new BasicHttpContext();
// Bind custom cookie store to the local context
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpPost httppost=new HttpPost("http://www.iteye.com/login");
//创建参数列队
List<NameValuePair> formparams=new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("name","**********"));
formparams.add(new BasicNameValuePair("password","********"));
formparams.add(new BasicNameValuePair("button","登 录"));
UrlEncodedFormEntity uefEntity;
uefEntity= new UrlEncodedFormEntity(formparams,"UTF-8");
httppost.setEntity(uefEntity);
HttpResponse response= httpclient.execute(httppost,localContext);
int statusCode;
statusCode=response.getStatusLine().getStatusCode();
System.out.println(response.getStatusLine());

httppost.abort(); //post 连接关闭,关了一个才能连下一个



//验证登陆结束,下面开始发帖!
httppost=new HttpPost("http://tomfish88.iteye.com/admin/blogs");
formparams=new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("blog[origin]","0"));
formparams.add(new BasicNameValuePair("blog[origin]","1"));
formparams.add(new BasicNameValuePair("blog[category_id]","129003"));
formparams.add(new BasicNameValuePair("blog[title]",titlett));
formparams.add(new BasicNameValuePair("blog[sys_category_id]","1"));
formparams.add(new BasicNameValuePair("blog[sys_tag_id]","323"));
formparams.add(new BasicNameValuePair("auto_save_id",""));
formparams.add(new BasicNameValuePair("blog[bbcode]","false"));
formparams.add(new BasicNameValuePair("blog[body]",content));
formparams.add(new BasicNameValuePair("blog[diggable]","0")); //是否发首页
formparams.add(new BasicNameValuePair("commit","提交"));
uefEntity= new UrlEncodedFormEntity(formparams,"UTF-8");
httppost.setEntity(uefEntity);
response= httpclient.execute(httppost,localContext);
statusCode=response.getStatusLine().getStatusCode();
System.out.println(response.getStatusLine());
// EntityUtils.consume(entity); // entity销毁
httppost.abort(); //post 连接关闭,关了一个才能连下一个

// EntityUtils.consume(entity); // entity销毁
httpclient.getConnectionManager().shutdown();

}
}



后来一直报302转向问题,我搞了一个星期了也没搞定,快崩溃了

然后我写了个带cookie跑的,输出内容的时候带登陆框,我知道我又没有登陆成功,接着贴代码

package function.httpclient;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.DefaultRedirectStrategy;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class Test3 {

public Header login(String user,String pass) throws Exception{
HttpClient httpclient = new DefaultHttpClient();
HttpClientParams.setCookiePolicy(httpclient.getParams(),CookiePolicy.BROWSER_COMPATIBILITY);

String cookie="";
String split="";
HttpPost httppost=new HttpPost("http://tomfish88.iteye.com/login");
List<NameValuePair> formparams=new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("user_name","*******"));
formparams.add(new BasicNameValuePair("password","*******"));
UrlEncodedFormEntity uefEntity;
uefEntity= new UrlEncodedFormEntity(formparams,"UTF-8");
httppost.setEntity(uefEntity);
//httppost.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.231 Safari/534.10");
HttpResponse response= httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity == null)
throw new Exception("登录失败了");
Header head=response.getFirstHeader("Set-Cookie");
System.out.println("cookie----------");
// System.out.println(head.getValue());
HeaderIterator it =response.headerIterator("Set-Cookie");
while(it.hasNext()){
cookie+=split+it.next().toString();
split=";";
}

return head;
}

public static void main(String args[]) throws Exception, Exception{
Test3 ts= new Test3();
Header cc=ts.login("********", "*****");
System.out.println(cc);

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://tomfish88.iteye.com");
httpget.setHeader(cc);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.toString(entity,"UTF-8"));
System.out.println("------------------end1----------------------");

}}


我用的是httpclient 4.1.1 ,现在是到转向的时候302,打印页面结果如下

<html><body>You are being [url=http://tomfish88.iteye.com/login]redirected[/url].</body></html>

就是个转向


然后这个转向如何处理,继续到发表blog页面发表文章呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值