先耐心看我是怎么一步一步发现问题的,国庆节我打算把Android网路互联搞完。然后盯着视频写代码,这是某网站视频截图如下:

她正在写Android客户端的一个访问demo,实现登录验证功能。而且是用GET方式访问,截图中可以看到:她写的conn.setOnOutput(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(faule),运行结果是右边的“login success”。这和视频里的代码截然相反,那么这个神秘的setDoOutput到底是什么鬼?

我简要说明:setDoInput(true),是指客户端(就是我们的app)接受服务器的输入(就是服务的返回值),这个必须为true,因为所有的网络请求都需要接受服务器的响应,不管是get方式,还是POST方式。setDoOutput()是true还是false,可就是另外一回事了,setDoOutput是指客户端是否需要向服务器发送数据,这里我们为什么要设置成false了?

    其实,我们的url只是网络请求的头部,还可以携带body,这就是POST和GET的区别了。这就意味着客户端要向服务器端输出,所以是Output。现在我们设置setDoOutput(false),就好理解了。我们不需要传请求体(body),就设为false。具体看这个网址吧:csdn:HttpUrlConnection的setDoOutput与setDoInput的区别。

    我没有把这个视频网站的网址贴出来,是因为他们毕竟让我免费学习了很多android知识,这个过程让我更深刻的理解了服务器,servlet,汉字乱码,http状态码等等,也希望那些做视频的机构,能够对视频质量负责。

----------------2019年5月6日补充:欢迎小白加入qq群:704369440---------------

更多相关文章

  1. Android客户端与服务器交互方式(1)
  2. Android从服务端获取json解析显示在客户端上面
  3. android上传图片至服务器
  4. MediaExtractor的seekTo方法精确定位到指定帧
  5. Android上传文件到Django服务器
  6. Android(安卓)屏幕截图 代码
  7. Android中获取SQL Server中的数据
  8. Android(安卓)屏幕截图 代码
  9. Android(安卓)ListView下滑会报空指针异常

随机推荐

  1. Android(安卓)Studio快捷键以及使用技巧
  2. Android(安卓)开发一定要看的15个实战项
  3. Android(安卓)Menu
  4. Android(安卓)Web Apps
  5. android的消息处理机制(图+源码分析)——Lo
  6. Android(安卓)渗透测试学习手册 第一章 A
  7. 《Android(安卓)基础(四十九)》Navigation
  8. Android(安卓)手机软键盘的弹起和关闭的
  9. Java Android(安卓)HTTP实现总结
  10. android:configChanges属性