android post访问


  
  
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,否则将得不到数据


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值