URL url=new URL("http://172.28.132.135:8080/login/servlet/loginservice");
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setReadTimeout(5000);
conn.setRequestMethod("POST");
System.out.println(s1+" "+s2);
String s="name="+s1+"&age="+s2;
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Host","172.28.132.135:8080");
System.out.println(s.getBytes().length);
conn.setRequestProperty("Content-Length", s.getBytes().length+"");
OutputStream ous=conn.getOutputStream();
ous.write(s.getBytes());
ous.flush();
ous.close();
reture conn.getResponseCode()==200;
通过post往服务器发送数据显的很纠结,就跟大家分享一下,我在做的过程中出现的多个错误吧
问题一:在服务器的dopost中有打印的代码,但是一直没有打印,而在if(conn.getResponseCode()==200)中有打印
可能原因1:检查你的URL是否包含localhost,因为通过手机访问,这个localhost就是手机的,而不是我们的电脑主机
可能原因2:检查你的URL是否有写错,因为我们访问的页面是提交数据的界面,而非输入参数的页面,也就是相当于是点击提交数据之后所到的那个页面
问题二:抛出异常java.io.IOException: content-length promised 14 bytes, but received 0
可能原因1:出现这个错误应该是你大意了,仔细检查一下,是否有将数据写出去,也就是通过httpurlconnection获得一个outputstream,然后通过这个outputstream 写出去了。
问题三:忘记写setdooutput(true)
理论上来说,这句话是必须有才能写出数据的,但是在没有的情况下,有时也是正确的,所以这个就不好给出样例,希望大家在使用过程中,记得加上,相当于有了这 句话你就有了写出数据的权限了
问题四:不写主机名
同上,是一个可有可无,不知是否会报错的内容,这种报错是有时候的,也不一定,所以最好还是添加上去为好
问题五:所指定的content-lenth不是byte长度,而是使用String.getlength()来指定
这样是会出错的,因为我们需要指定的是传入byte数组的长度,而非String的长度,如果你不这样指定,在图片那一张会出很大的问题,相对于文字来说,这样可能导致的原因不明显,因为String的长度小于string.getbytes的长度,这样就不会产生永远等待的情况,但是如果多出几组数据,那么就会出现乱套分不清位置的现象,希望大家谨慎使用
提醒:在使用get发送数据的时候,切记url不能包含,如果包含那么的使用urlencoder,否则将得不到数据
android post访问
最新推荐文章于 2022-10-11 08:39:22 发布