求助:android 手机端通过gprs 上网,无法获得webservers数据

shawnshaw 2013-10-15 01:15:09
通过wifi,可以链接webservers 平且从中得到数据,但是打开移动网络,就无法从webservers得到数据,手机端使用的代码如下:
SoapObject request = new SoapObject("http://nenggong.com", "checkUser");
request.addProperty("logname",name);
request.addProperty("password",pass);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE ht = new HttpTransportSE("http://"+IP+"/axis2/services/crane_services");


try {
ht.call(null, envelope); //call 得不到数据
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

有一次,从webservers里面得到过数据,后面我再怎么弄,再也得不到数据了

webservers 是我自己写的,功能在数据库中操作数据。已经发布到tomact下面了,
...全文
4234 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqh08 2015-03-07
  • 打赏
  • 举报
回复
我在使用CMCC-EDU网络情况下,偶尔遇到该情况,使用apache的http方式造成了connect reset by peer,后来直接使用java.net.HttpURLConnection异常解决。
oUNXing 2014-12-31
  • 打赏
  • 举报
回复
同是重庆人,同样遇到这个问题,不过我不是访问接口,是直接连服务器上读取一段xml文件,移动网络,用浏览器打开可以访问打开,但在程序里遇到楼主的错误,wifi又没问题,哈哈。 不过我基本没理会这个问题,以前把xml放到阿里云上,重庆移动网络是没问题的,现在放到服务器上出现问题
  • 打赏
  • 举报
回复
引用 7 楼 u010475784 的回复:
感谢楼上大神的粘贴回复,虽然没看太明白,但还是万分的感谢。 首先,贴一下我现在进程:经过多方面的测试(我在重庆,webservers也是部署在重庆)使用联通3g的网络,可以调用webservers平且得到数据,但是使用移动的3g网络或者2g网络都无法调用,并且会出现上述错误,又通过在深圳的朋友帮我用移动网络进行测试,发现竟然可以调用webservers,初步判定是:重庆移动网络不知道处于什么原因将我的http链接给close 掉了,但是这有可能吗? 我添加 ht.debug = true; 后出现新的错误: BufferedInputStream is closed 网上回复:是2.3以上版本的一个bug,弄得我又是一团雾水。 是移动网络弱造成的原因吗?还是我服务器端或者客户端的bug所造成的?
移动网络系统改造问题。中移动的系统太过庞大,原来并不适合针对业余开发人员的“又大又慢的”webservice、WCF等等机制的,你应该使用针对稍微专业一点的开发人员、轻量级、自定义对象序列化/反序列化机制的直接http或者直接tcp通讯方式。
  • 打赏
  • 举报
回复
你自己设置,是没有用的。以瞎猜的方式去长篇大论引经据典,但是经不起测试。 同样的服务器ip和端口,同样的 http 协议,如果你使用轻量级的 http 访问方式,就一点问题都没有了。使用 webservice 就会在移动网络繁忙时随时被中断、丢弃。
  • 打赏
  • 举报
回复
引用 8 楼 u010475784 的回复:
我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connection reset by peer error 这个原因造成的。 这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?
开发手机APP时,使用轻量级的直接Http Get、Post访问,不要使用什么webservice,更不要使用wcf。
  • 打赏
  • 举报
回复
楼主,我也遇到这个问题了,不知道可否有解决的办法
yhywdm 2013-11-25
  • 打赏
  • 举报
回复
不知道楼主有没有解决,网上有人说是将这段代码:envelope.dotNet =true;改为“envelope.dotNet =false;”。不过我用这个办法没有解决,我把网络cmnet改为cmwap就可以访问了,如果还不可以去下载一个最新的ksoap2(http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2)。楼主如果有其他好办法,麻烦分享一下啊。
风一样的大叔 2013-10-28
  • 打赏
  • 举报
回复
我没做过这块,所以不敢妄下结论,但是用代理这个方法应该可行
shawnshaw 2013-10-26
  • 打赏
  • 举报
回复
感谢他写留痕版主对我的点拨,回答,万分感谢。 我在网上发现这个问题还是很多人碰到的,但到最后都不了了之了,也没有一个具体的解决办法,如果是移动做了相关的限制,我应该去找移动去咨询这个事情吗? 有没有通过其他的办法绕过去,比如说,通过代理服务器绕过去,这种办法可行吗?抑或还有没有其他的办法可以让移动的用户也能使用啊
shawnshaw 2013-10-23
  • 打赏
  • 举报
回复
我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connection reset by peer error 这个原因造成的。 这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?
风一样的大叔 2013-10-23
  • 打赏
  • 举报
回复
引用 8 楼 u010475784 的回复:
我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connection reset by peer error 这个原因造成的。 这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?
如果是你服务器的问题,为什么有些地方好呢,我估计应该是每个地方的移动或者联通有限制。
shawnshaw 2013-10-22
  • 打赏
  • 举报
回复
感谢楼上大神的粘贴回复,虽然没看太明白,但还是万分的感谢。 首先,贴一下我现在进程:经过多方面的测试(我在重庆,webservers也是部署在重庆)使用联通3g的网络,可以调用webservers平且得到数据,但是使用移动的3g网络或者2g网络都无法调用,并且会出现上述错误,又通过在深圳的朋友帮我用移动网络进行测试,发现竟然可以调用webservers,初步判定是:重庆移动网络不知道处于什么原因将我的http链接给close 掉了,但是这有可能吗? 我添加 ht.debug = true; 后出现新的错误: BufferedInputStream is closed 网上回复:是2.3以上版本的一个bug,弄得我又是一团雾水。 是移动网络弱造成的原因吗?还是我服务器端或者客户端的bug所造成的?
风一样的大叔 2013-10-22
  • 打赏
  • 举报
回复
总结一下: 1.你的socket队列中没有空间了 2.receiver never acknowledges data sent on a datastream socket(接受者不承认在数据流接口上发送的数据) 3.A connection will timeout if the local system doesn't receive an (ACK)nowledgement for data sent Connection reset by peer 抛出的异常也有可能是客户端中断连接。 当客户端中断连接的时候服务器也会抛出这个异常出来。 就是说客户端正在连接的时候 突然终止 了连接,这样,服务器端会抛出Connection reset by peer 异常出来 http://topic.csdn.net/u/20080402/16/7fe0a9c2-cef5-4756-8c45-157555cd0097.html 第 4个异常是java.net.SocketException: (Connection reset或者 Connect reset by peer:Socket write error)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常 (Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。 http://topic.csdn.net/u/20080328/10/e08d894a-319a-4985-8407-50e103305e6c.html 我这里有关于网络异常方面的建议,发上去大家学习: 第 1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监 听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。 第 2个异常是java.net.ConnectException: Connection refused: connect。该异常发生在客户端进行 new Socket(ip, port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端 口进行监听。出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能 ping通,如果能ping通(服务服务器端把ping禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。 第3个异常是java.net.SocketException: Socket is closed,该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。 第 4个异常是java.net.SocketException: (Connection reset或者 Connect reset by peer:Socket write error)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常 (Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。 第5个异常是 java.net.SocketException: Broken pipe。该异常在客户端和服务器均有可能发生。在第4个异常的第一种情况中(也就是抛出SocketExcepton:Connect reset by peer:Socket write error后),如果再继续写数据则抛出该异常。前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对 方关闭连接后自己也要关闭该连接。 客户端错误代码10053 Software caused connection abort(软件原因导致连接中断) 又涉及到一个问题就是阻塞函数和非阻塞函数,阻塞Socket和非阻塞Socket 一 是阻塞函数,一是非阻塞函数。所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会阻塞本线程消息的发送。所谓非阻 塞函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回 http://www.aka.org.cn/Lectures/002/Lecture-2.1.8/Lecture-2.1.8/new_page_15.htm http://www.cppblog.com/kenlistian/archive/2007/12/27/39746.html http://hi.baidu.com/evenque/blog/item/1ccfc63ffc3527c17d1e7188.html http://www.cic.tsinghua.edu.cn/jdx/lunwen/WinSockx.htm Connection reset by peer的原因: 经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是: ①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; ②:客户关掉了浏览器,而服务器还在给客户端发送数据; ③:浏览器端按了Stop 很多人都说是客户端造成的,没有办法控制,是个比较郁闷的问题。 引起该问题的原因是由于此时Server端连接已经被复位,而Client依然通过该连接在接收和发送数据,在网上搜索了一下该错误,发现该错误引起的原因大都是防火墙的原因,嘿嘿,又学了一招。 socket, nio socket 及nio socket框架MINA总结 Windows Sockets Error Codes http://msdn2.microsoft.com/en-us/library/ms740668.aspx socket 通信有通信的规则, 如果你希望保持长连接, 就应该有个通信协议, 包括写入/0也是规则的一部分, 传完一个文件等待下一个. 要可不保持长连接, 可使用webservice, 这样你的协议变的更为可读, 更容易包装成产品. 看你的程序希望read结束, 不象是希望保持长连接的样子, 晕ing 经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是: ①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; ②:客户关掉了浏览器,而服务器还在给客户端发送数据; ③:浏览器端按了Stop 很多人都说是客户端造成的,没有办法控制,是个比较郁闷的问题。 这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connection reset by peer error http://topic.csdn.net/t/20060915/12/5024325.html 沟通非阻塞IO与阻塞IO - 输入流 沟通非阻塞IO与阻塞IO - 输出流 附加该问题的最近结论 1.我使用MyEclipse单步调试,当调试到inputStream 的时候,看变量,发现一个问题, 那就是SocketInputStream的Channel是null,为什么那,我不知道 又在网络上找到几句话粘贴到这里吧!如下 "No buffer space available , recv failed" 谢谢sandyen(杉叶)的回答,我在网上也搜到这个,但是不是这个原因。 问题已解决,确实不是程序的问题。 netstat -an发现有大量的端口占用,监听很多机器的139,445端口。 确定机器中了震荡波,下载补丁安装重启,问题解决。 导致这个异常的原因应该是系统的socket大量的资源被占用, 导致没有足够的资源接收前台上报或者回复的数据。
shawnshaw 2013-10-21
  • 打赏
  • 举报
回复
使用手机端调用,会出现 10-21 18:14:25.685: W/System.err(14444): java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer) 错误,在网上也查询了各种各样的说法,不知道怎么弄了。。。。。加到100分,有没有大神来啊
Landa_Jimmy 2013-10-16
  • 打赏
  • 举报
回复
是不是移动网络网速不给力,之前遇到的一个也是在wifi下是可以的,但是在流量的这种情况下就得不到数据了。原因和这个有关系。
shawnshaw 2013-10-16
  • 打赏
  • 举报
回复
引用 1 楼 u012173239 的回复:
是不是移动网络网速不给力,之前遇到的一个也是在wifi下是可以的,但是在流量的这种情况下就得不到数据了。原因和这个有关系。
最后你解决问题了吗?是怎么解决的呢?
shawnshaw 2013-10-16
  • 打赏
  • 举报
回复
引用 2 楼 feiyun0112 的回复:
http://"+IP+"/ 这个IP是内网吧,打开移动网络,只能访问公网IP ***************************************************************************** http://feiyun0112.cnblogs.com/
IP 是外网的IP,这个没有问题,我从外网的wifi可以连接到webservers,得到数据
feiyun0112 2013-10-16
  • 打赏
  • 举报
回复
http://"+IP+"/
这个IP是内网吧,打开移动网络,只能访问公网IP

*****************************************************************************
http://feiyun0112.cnblogs.com/

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧