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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值