android网络连接使用GET方式请求服务器时的setDoOutput(true)惹的祸

android网络连接使用GET方式请求服务器时的setDoOutput(true)惹的祸 上一篇eclipse下查看tomcat的安装位置_eclipse查看安装的tomcat-zhangjin66先耐心看我是怎么一步一步发现问题的。国庆节我打算把Android网路互联这一块儿学完。盯着某网站视频写代码这是某网站视频截图如下她正在写Android客户端的一个demo需要实现登录验证功能。截图中可以看到她写的conn.setDoOutput(true);然后写了conn.setRequestMethod(GET);就是说用的是GET请求。因为以前只要跟着视频一起敲最后的结果一定和她的一致。所以我对这个网站的视频质量从没怀疑过。我跟着上面的敲完然后自己在javaEE-Eclipse上搭建tomcat服务器。视频上的效果是:如果用户名为“zhangsan”并且密码为“123”服务器就会返回“OK”否则返回“ERROR”我并不会搭建服务器只能一点一点地找资料慢慢学从servlet开始了解了解URL了解doGET方法了解怎么接受并识别数据终于最后在浏览器地址栏输入URL后服务器有了响应。我以为大功告成没想到自己的app点击登录按钮时并没有接受到服务器返回的数据我对着logcat看了半天把错误复制粘贴到百度甚至是Google上去求助没有相关的详细解释。搞了好几个小时最终我看到视频截图中的那一行代码conn.getResponseCode()200心想到底什么意思我百度到这篇文章知乎http返回码200的含义惊讶了原来还有常说的404,30x,我试着把自己的程序里面的getResponseCode()输出结果是405代表着我使用了禁止的访问方式。我再次百度想看看怎么解决这个405 错误但是很遗憾没有可行的解决方式。点击登录按钮服务器仍旧一点反应都没有。折腾了好长时间我都想放弃了真的感觉自己尽力了没办法了本来打算把网络互连学完就去补java现在看来得提前结束Android之旅了。下午早早回寝室感觉彻底解脱了。在寝室里我边打游戏边想那个405错误到底是怎么回事心里还是放不下。第二天一大早我习惯性地背起书包再回创新实验室。没什么好办法只能暂时放弃视频到网上去找其他大神的demo。费尽心血沙里淘金找到了可靠的代码重新建服务器写Android布局改URL。一番折腾终于在10月4号的晚上成功了。网址如下csdn大神采用HttpURLConnection这时我终于忍不住去反思视频里的代码到底哪里出错了那个405错误到底是为什么看截图如下大家可以清楚地看到在我的新project中我写的setDoOutput(false)运行结果是右边的“login success”。这和视频里的代码截然相反那么这个神秘的setDoOutput到底是什么鬼我简要说明setDoInput(true),是指客户端就是我们的app接受服务器的输入就是服务的返回值这个必须为true,因为所有的网络请求都需要接受服务器的响应不管是get方式还是POST方式。setDoOutput()是true还是false可就是另外一回事了setDoOutput是指客户端是否需要向服务器发送数据这里我们为什么要设置成false了其实我们的url只是网络请求的头部还可以携带body这就是POST和GET的区别了。这就意味着客户端要向服务器端输出所以是Output。现在我们设置setDoOutput(false)就好理解了。我们不需要传请求体body就设为false。具体看这个网址吧:csdnHttpUrlConnection的setDoOutput与setDoInput的区别。那405又是怎么回事了这篇博客讲的蛮清楚用HttpURLConnection复现http响应码405解释405感兴趣可以看看。我没有把这个视频网站的网址贴出来是因为他们毕竟让我免费学习了很多android知识这个过程让我更深刻的理解了服务器servlet汉字乱码http状态码等等也希望那些做视频的机构能够对视频质量负责。----------------2019年5月6日补充欢迎小白加入学习群私信我加群 ---------------下一篇用HttpURLConnection复现http响应码405