java使用httpclient通过post方式提交表单失败求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用httpclient通过post方式提交表单失败求助相关的知识,希望对你有一定的参考价值。

新手求助:流程一:通过httpclient的GET方式成功登陆教务系统,流程二:登陆后通过POST方式提交表单修改登录密码。但是流程二执行后密码没有改变,代码如下:
public static void Changepassword_ByClientPost(String username,String password,String TextBox1,String TextBox2,String TextBox3)
try

//登陆教务系统
loginByClientGet(username, password);
//输入地址
String path="http://210.35.36.68/teachweb/brxx/ModifyPwd.aspx";
HttpPost httpPost =new HttpPost(path);
//制定要提交的数据实体
List<NameValuePair>parameters=new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("TextBox1", TextBox1));
parameters.add(new BasicNameValuePair("TextBox2",TextBox1 ));
parameters.add(new BasicNameValuePair("TextBox3",TextBox1 ));
httpPost.setEntity(new UrlEncodedFormEntity(parameters,"gb2312"));
//提交
HttpResponse response=client.execute(httpPost);
InputStream is=response.getEntity().getContent();
//将网站源码保存到本地
String text=streamtools.readinputstream(is);
signinservice.savedetail(text, "html_user_clientPOST.txt");
catch (Exception e)

// TODO Auto-generated catch block
e.printStackTrace();



网站情况如图:

如还需要提供什么信息尽管回复就好。
问题我已经自己解决了,感谢你们的回答

我的解决方案如下(不一定适用于其他原因引发的问题):
因为我学校的教务系统会生成随机的字符串和账号密码一起post上去,post的时候一起带上就好啦

先将HttpResponse response 的响应码打印出来,如果是200就说明正确,如果不是,根据具体相应码的值确定是什么错误。

如果是200,你再看响应内容,是否是你要的,也就是你的text

你可以使用log.d()来查看日志;追问

因为我看到在httpwatch中无论修改成功或失败响应码都是200,所以代码中没有用响应码来做判断

追答

是200后,你就要看你返回的内容是什么了。你使用log.d("text", text);查看内容,看看对不对?

如果返回结果正确,就找你的signinservice的savedetail(text, "html_user_clientPOST.txt")方法

这样一步一步的排查。

如果自己客户端都正确,你就可以怀疑是服务器的代码问题了。

参考技术A 这看不出什么问题,关键是你的
http://210.35.36.68/teachweb/brxx/ModifyPwd.aspx
是如何处理传入的参数的

也是TextBox1,TextBox2,TextBox3来接收吗?是不是这里出问题了追问

我写成TextBox1、2、3因为httpwatch中的postdata(也就是第二张图)里显示这三栏的paramenter分别就是TextBox1、2、3

但是接收的到底是不是这三个我也不太清楚,

参考技术B 你用eclipse这个软件编程看下代码有没有问题追问

eclipse上显示没有问题

追答

那就是少了什么代码、、、、这段代码我也不是很会

以上是关于java使用httpclient通过post方式提交表单失败求助的主要内容,如果未能解决你的问题,请参考以下文章

java用httpClient post方式传数据,ASP.NET怎么接收数据?

Http (java)的post和get方式

如何使用HttpClient模拟浏览器GET POST

HttpClient通过Post方式发送Json数据

HttpClient--使用HttpClient进行Get Post请求访问

HttpURLConnection与HttpClient浅析