最近在写一个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);

更多相关文章

  1. 从源码一次彻底理解Android的消息机制
  2. android实现退出时关闭所有activity
  3. android 开发使用 kotlin 进行点击事件监听和界面跳转,直接传也方
  4. Android下载完文件打开
  5. Looper源码探究—Android消息机制
  6. android轮播图组件的制作方法
  7. Android动态壁纸开发
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. android:layout_weight android:weightSu
  2. Android tree应用框架
  3. Android:自定义toast
  4. Android判断某一应用是否正在运行与判断
  5. Android Material Design 实践(四)--Mate
  6. Android项目build.gradle多渠道&完整版
  7. android 记录和恢复ListView滚动的位置
  8. Android多媒体开发(4)————移植Libmad到
  9. EditText显示光标
  10. Android危险权限和权限组