android的socket程序中conn.getResponseCode() 为405
最近在写一个Socket程序中,遇到了这个问题,本以为是Android客户端程序的问题,没想到最后问题出现在服务端的Servlet中,也就是我们平时J2ee中经常遇到的405问题。
具体表现为:
Servlet是普通java写的,client是运行在android模拟器完成,现在情况是Android往Servlet发过去的数据,在Servlet中都可以得到,但是client端在接收Servlet响应的时候报错了!错误:request time failed: java.net.SocketException: Address family not supported by protocol
可以用这种方式做测试:
(我自己的机子:传了两个参数:username,password)http://10.221.129.31:8080/ServerForAndroid/LoginServlet?username=admin&passwword=123
出现HTTP Status 405 - HTTP method GET is not supported by this URL
原因是:
1、继承自Httpservlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法,默认调用父类的doGet或doPost等方法。
2、父类HttpServlet的doGet或doPost等方法覆盖了你写的到doGet或doPost等方法。
不管是1或2,父类HttpServlet的doGet或doPost等方法默认实现是返回状态码是405的Http错误表示 对于指定资源请求方法不被允许。
解决方法:
1、子类重写doGet或doPost等方法。
2、在你扩张的Servlet中重写doGet或doPost等方法来处理请求和响应时,不要调用父类的doGet或doPost等方法即去掉supper.doGet(request,response)和super.doPost(request,response);
更多相关文章
- 从源码一次彻底理解Android的消息机制
- android实现退出时关闭所有activity
- android 开发使用 kotlin 进行点击事件监听和界面跳转,直接传也方
- Android下载完文件打开
- Looper源码探究—Android消息机制
- android轮播图组件的制作方法
- Android动态壁纸开发
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用