import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;public class Test {
public static void main(String[] args) throws HttpException, IOException {
HttpClient client=new HttpClient();
client.getHostConfiguration().setHost("http://www.tmdss.com/",80);
PostMethod pMethod=new PostMethod("http://www.tmdss.com/logging.php?action=login&loginsubmit=true");
NameValuePair formhash = new NameValuePair("formhash","16db2c76");
NameValuePair cookietime = new NameValuePair("cookietime","2592000");
NameValuePair loginfield = new NameValuePair("loginfield","username");
NameValuePair username = new NameValuePair("username","tianxiadagui");
NameValuePair password = new NameValuePair("password","321456789");

pMethod.setRequestBody(new NameValuePair[] {formhash,cookietime,loginfield,username,password}); 
client.executeMethod(pMethod); 
GetMethod gMethod=new GetMethod("http://www.tmdss.com/post.php?action=newthread&fid=38&extra=page%3D1");
client.executeMethod(gMethod);
// Cookie[] cookies = client.getState().getCookies(); 
//     client.getState().addCookies(cookies); 
Cookie[] cookies = client.getState().getCookies();
String x8c_sid=null;
x8c_sid=cookies[0].toString();
for(int i=0;i<cookies.length;i++){
System.out.println(cookies[i]);
}
    client.getState().addCookies(cookies); 
    gMethod.releaseConnection();
    
PostMethod pMethod0=new PostMethod("http://www.tmdss.com/post.php?action=newthread&fid=24&extra=page%3D1&topicsubmit=yes");
NameValuePair formhash0 = new NameValuePair("formhash","e8f391a4");
NameValuePair x8c_sid0 = new NameValuePair("x8c_sid",x8c_sid);
NameValuePair frombbs = new NameValuePair("frombbs","1");
NameValuePair typeid = new NameValuePair("typeid","52");
NameValuePair subject = new NameValuePair("subject","看下能成功啵");
NameValuePair message = new NameValuePair("message","看下能成功啵。");
NameValuePair readperm = new NameValuePair("readperm","0");
NameValuePair price = new NameValuePair("price","0");
NameValuePair wysiwyg = new NameValuePair("wysiwyg","1");

pMethod0.setRequestBody(new NameValuePair[] {formhash0,x8c_sid0,frombbs,typeid,subject,message,readperm,price,wysiwyg}); 
int state=client.executeMethod(pMethod0);
System.out.println(state);
System.out.println(new String(pMethod0.getResponseBodyAsString().getBytes("ISO-8859-1")));

    pMethod.releaseConnection(); 
}
}
=======================================================
报错
您的请求来路不正确或验证字串不符,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。

解决方案 »

  1.   

    没有别的异常  只有返回的这个页面   页面上就提示了这个错误    
    这个错误主要是Discuz验证sid时,发现每次提交的form的sid跟登陆时的sid不一致而导致的这个错误,我现在就是不知道怎么去修改了,因为刚用httpClient
      

  2.   

    sid是不是那个cookie呢?
    你有打印语句,照例说有信息打印,
    比如说你的cookie有个循环打印,
    看有没有执行
      

  3.   

    感觉你这个不是程序端自己报的错啊,好像是服务器返回的错误提示。你是在做模拟登录吧?你知道服务器端要求的登录参数是什么吗?你提交的参数符合要求吗?
    ■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  4.   

    刚刚你们谁测试过没  我看到谁测试了一条成功了
    是的  这个就是服务器返回来的信息   因为Discuz做了发帖限制   所以才会出现这种情况
      

  5.   

    您的请求来路不正确或验证字串不符,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。这个不是 httpclient的错误返回,就是web server返回的信息,state是200吧? 如果是,就说明问题不是httpclient的问题。
    要解决这个问题,建议 从web server上找问题,看它哪种情况会返回这个信息,然后对症下药。
      

  6.   

    我测试了下楼主的代码,似乎没有问题。可以正确返回html页面。
      

  7.   

    坤哥威武,坤哥强大,坤哥一统江湖..坤哥也来看看... ... CSDN 是我家-Hello world..