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

问题描述

通过wifi,可以链接webservers平且从中得到数据,但是打开移动网络,就无法从webservers得到数据,手机端使用的代码如下:SoapObjectrequest=newSoapObject("http://nenggong.com","checkUser");request.addProperty("logname",name);request.addProperty("password",pass);SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut=request;HttpTransportSEht=newHttpTransportSE("http://"+IP+"/axis2/services/crane_services");try{ht.call(null,envelope);//call得不到数据}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(XmlPullParserExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}

有一次,从webservers里面得到过数据,后面我再怎么弄,再也得不到数据了webservers是我自己写的,功能在数据库中操作数据。已经发布到tomact下面了,

解决方案

解决方案二:
是不是移动网络网速不给力,之前遇到的一个也是在wifi下是可以的,但是在流量的这种情况下就得不到数据了。原因和这个有关系。
解决方案三:
http://"+IP+"/这个IP是内网吧,打开移动网络,只能访问公网IP*****************************************************************************http://feiyun0112.cnblogs.com/
解决方案四:
引用2楼feiyun0112的回复:

http://"+IP+"/这个IP是内网吧,打开移动网络,只能访问公网IP*****************************************************************************http://feiyun0112.cnblogs.com/

IP是外网的IP,这个没有问题,我从外网的wifi可以连接到webservers,得到数据
解决方案五:
引用1楼u012173239的回复:

是不是移动网络网速不给力,之前遇到的一个也是在wifi下是可以的,但是在流量的这种情况下就得不到数据了。原因和这个有关系。

最后你解决问题了吗?是怎么解决的呢?
解决方案六:
使用手机端调用,会出现10-2118:14:25.685:W/System.err(14444):java.net.SocketException:recvfromfailed:ECONNRESET(Connectionresetbypeer)错误,在网上也查询了各种各样的说法,不知道怎么弄了。。。。。加到100分,有没有大神来啊
解决方案七:
总结一下:1.你的socket队列中没有空间了2.receiverneveracknowledgesdatasentonadatastreamsocket(接受者不承认在数据流接口上发送的数据)3.Aconnectionwilltimeoutifthelocalsystemdoesn'treceivean(ACK)nowledgementfordatasentConnectionresetbypeer抛出的异常也有可能是客户端中断连接。当客户端中断连接的时候服务器也会抛出这个异常出来。就是说客户端正在连接的时候突然终止了连接,这样,服务器端会抛出Connectionresetbypeer异常出来http://topic.csdn.net/u/20080402/16/7fe0a9c2-cef5-4756-8c45-157555cd0097.html第4个异常是java.net.SocketException:(Connectionreset或者Connectresetbypeer:Socketwriteerror)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connectresetbypeer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connectionreset)。简单的说就是在连接断开后的读和写操作引起的。http://topic.csdn.net/u/20080328/10/e08d894a-319a-4985-8407-50e103305e6c.html我这里有关于网络异常方面的建议,发上去大家学习:第1个异常是java.net.BindException:Addressalreadyinuse:JVM_Bind。该异常发生在服务器端进行newServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat–an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。第2个异常是java.net.ConnectException:Connectionrefused:connect。该异常发生在客户端进行newSocket(ip,port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端口进行监听。出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能ping通,如果能ping通(服务服务器端把ping禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。第3个异常是java.net.SocketException:Socketisclosed,该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。第4个异常是java.net.SocketException:(Connectionreset或者Connectresetbypeer:Socketwriteerror)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connectresetbypeer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connectionreset)。简单的说就是在连接断开后的读和写操作引起的。第5个异常是java.net.SocketException:Brokenpipe。该异常在客户端和服务器均有可能发生。在第4个异常的第一种情况中(也就是抛出SocketExcepton:Connectresetbypeer:Socketwriteerror后),如果再继续写数据则抛出该异常。前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对方关闭连接后自己也要关闭该连接。客户端错误代码10053Softwarecausedconnectionabort(软件原因导致连接中断)又涉及到一个问题就是阻塞函数和非阻塞函数,阻塞Socket和非阻塞Socket一是阻塞函数,一是非阻塞函数。所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会阻塞本线程消息的发送。所谓非阻塞函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回http://www.aka.org.cn/Lectures/002/Lecture-2.1.8/Lecture-2.1.8/new_page_15.htmhttp://www.cppblog.com/kenlistian/archive/2007/12/27/39746.htmlhttp://hi.baidu.com/evenque/blog/item/1ccfc63ffc3527c17d1e7188.htmlhttp://www.cic.tsinghua.edu.cn/jdx/lunwen/WinSockx.htmConnectionresetbypeer的原因:经常出现的Connectionresetbypeer:原因可能是多方面的,不过更常见的原因是:①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;②:客户关掉了浏览器,而服务器还在给客户端发送数据;③:浏览器端按了Stop很多人都说是客户端造成的,没有办法控制,是个比较郁闷的问题。引起该问题的原因是由于此时Server端连接已经被复位,而Client依然通过该连接在接收和发送数据,在网上搜索了一下该错误,发现该错误引起的原因大都是防火墙的原因,嘿嘿,又学了一招。socket,niosocket及niosocket框架MINA总结WindowsSocketsErrorCodeshttp://msdn2.microsoft.com/en-us/library/ms740668.aspxsocket通信有通信的规则,如果你希望保持长连接,就应该有个通信协议,包括写入/0也是规则的一部分,传完一个文件等待下一个.要可不保持长连接,可使用webservice,这样你的协议变的更为可读,更容易包装成产品.看你的程序希望read结束,不象是希望保持长连接的样子,晕ing经常出现的Connectionresetbypeer:原因可能是多方面的,不过更常见的原因是:①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;②:客户关掉了浏览器,而服务器还在给客户端发送数据;③:浏览器端按了Stop很多人都说是客户端造成的,没有办法控制,是个比较郁闷的问题。这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connectionresetbypeererrorhttp://topic.csdn.net/t/20060915/12/5024325.html沟通非阻塞IO与阻塞IO-输入流沟通非阻塞IO与阻塞IO-输出流附加该问题的最近结论1.我使用MyEclipse单步调试,当调试到inputStream的时候,看变量,发现一个问题,那就是SocketInputStream的Channel是null,为什么那,我不知道又在网络上找到几句话粘贴到这里吧!如下"Nobufferspaceavailable,recvfailed"谢谢sandyen(杉叶)的回答,我在网上也搜到这个,但是不是这个原因。问题已解决,确实不是程序的问题。netstat-an发现有大量的端口占用,监听很多机器的139,445端口。确定机器中了震荡波,下载补丁安装重启,问题解决。导致这个异常的原因应该是系统的socket大量的资源被占用,导致没有足够的资源接收前台上报或者回复的数据。
解决方案八:
感谢楼上大神的粘贴回复,虽然没看太明白,但还是万分的感谢。首先,贴一下我现在进程:经过多方面的测试(我在重庆,webservers也是部署在重庆)使用联通3g的网络,可以调用webservers平且得到数据,但是使用移动的3g网络或者2g网络都无法调用,并且会出现上述错误,又通过在深圳的朋友帮我用移动网络进行测试,发现竟然可以调用webservers,初步判定是:重庆移动网络不知道处于什么原因将我的http链接给close掉了,但是这有可能吗?我添加ht.debug=true;后出现新的错误:BufferedInputStreamisclosed网上回复:是2.3以上版本的一个bug,弄得我又是一团雾水。是移动网络弱造成的原因吗?还是我服务器端或者客户端的bug所造成的?
解决方案九:
我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connectionresetbypeererror这个原因造成的。这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?
解决方案十:
引用8楼u010475784的回复:

我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connectionresetbypeererror这个原因造成的。这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?

如果是你服务器的问题,为什么有些地方好呢,我估计应该是每个地方的移动或者联通有限制。
解决方案十一:
感谢他写留痕版主对我的点拨,回答,万分感谢。我在网上发现这个问题还是很多人碰到的,但到最后都不了了之了,也没有一个具体的解决办法,如果是移动做了相关的限制,我应该去找移动去咨询这个事情吗?有没有通过其他的办法绕过去,比如说,通过代理服务器绕过去,这种办法可行吗?抑或还有没有其他的办法可以让移动的用户也能使用啊
解决方案十二:
我没做过这块,所以不敢妄下结论,但是用代理这个方法应该可行
解决方案十三:
不知道楼主有没有解决,网上有人说是将这段代码:envelope.dotNet=true;改为“envelope.dotNet=false;”。不过我用这个办法没有解决,我把网络cmnet改为cmwap就可以访问了,如果还不可以去下载一个最新的ksoap2(http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2)。楼主如果有其他好办法,麻烦分享一下啊。
解决方案十四:
楼主,我也遇到这个问题了,不知道可否有解决的办法
解决方案十五:
引用8楼u010475784的回复:

我觉得现在我的问题就是:这是网络连接断掉引起的,一般是由于通过了防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会切断这个TCP的session,这时就会导致Connectionresetbypeererror这个原因造成的。这个是我服务器端防火墙的设置的问题吗?服务器端是有一个企业初级的防火墙的。我该怎么设置呢?

开发手机APP时,使用轻量级的直接HttpGet、Post访问,不要使用什么webservice,更不要使用wcf。
其他方案:
你自己设置,是没有用的。以瞎猜的方式去长篇大论引经据典,但是经不起测试。同样的服务器ip和端口,同样的http协议,如果你使用轻量级的http访问方式,就一点问题都没有了。使用webservice就会在移动网络繁忙时随时被中断、丢弃。
其他方案:
引用7楼u010475784的回复:

感谢楼上大神的粘贴回复,虽然没看太明白,但还是万分的感谢。首先,贴一下我现在进程:经过多方面的测试(我在重庆,webservers也是部署在重庆)使用联通3g的网络,可以调用webservers平且得到数据,但是使用移动的3g网络或者2g网络都无法调用,并且会出现上述错误,又通过在深圳的朋友帮我用移动网络进行测试,发现竟然可以调用webservers,初步判定是:重庆移动网络不知道处于什么原因将我的http链接给close掉了,但是这有可能吗?我添加ht.debug=true;后出现新的错误:BufferedInputStreamisclosed网上回复:是2.3以上版本的一个bug,弄得我又是一团雾水。是移动网络弱造成的原因吗?还是我服务器端或者客户端的bug所造成的?

移动网络系统改造问题。中移动的系统太过庞大,原来并不适合针对业余开发人员的“又大又慢的”webservice、WCF等等机制的,你应该使用针对稍微专业一点的开发人员、轻量级、自定义对象序列化/反序列化机制的直接http或者直接tcp通讯方式。
其他方案:
同是重庆人,同样遇到这个问题,不过我不是访问接口,是直接连服务器上读取一段xml文件,移动网络,用浏览器打开可以访问打开,但在程序里遇到楼主的错误,wifi又没问题,哈哈。不过我基本没理会这个问题,以前把xml放到阿里云上,重庆移动网络是没问题的,现在放到服务器上出现问题
其他方案:
我在使用CMCC-EDU网络情况下,偶尔遇到该情况,使用apache的http方式造成了connectresetbypeer,后来直接使用java.net.HttpURLConnection异常解决。

时间: 2024-11-04 08:27:44

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

新浪微博私信功能-如何设计与实现android手机端类似新浪微博的私信功能?

问题描述 如何设计与实现android手机端类似新浪微博的私信功能? 如何设计与实现android手机端类似新浪微博的私信功能?需要实现的一些思路,最好是有简单的例子和说明.谢谢各位.

Android手机端实时观看远程摄像头画面,通过Socket方式如何实现该效果?求大神帮忙

问题描述 Android手机端实时观看远程摄像头画面,通过Socket方式如何实现该效果?求大神帮忙 不清楚远程网络摄像头采集的流数据,在客户端怎么通过SurfaceView实时显示,会设计解码吗?很是困惑

服务器-Android手机端与后台数据同步问题

问题描述 Android手机端与后台数据同步问题 假设手机端发起了卡注销请求,由于后台走的流程较多,导致连接超时, 然而数据库中的相应注销字段已经修改. 然而因为连接超时,手机端该卡的状态仍然是可用状态. 问题:除了手机端开线程轮询服务器的方法外,还有什么方式? 可以保证手机端与服务器端的数据同步. 解决方案 这个没关系,下次使用时,后天返回已注销就是了,本次操作如果错误,提示用户,可以让用户主动刷新,没必要轮询刷新

android手机端与PC端使用adb forword通信

PC端与Android手机端使用adb forword通信 服务器端代码如下: import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Server { public static final String TAG = "ser

Android手机端小米推送Demo解析和实现方法_Android

最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消息推送,关于Android推送的解决方案有很多种,有C2DM,轮询, SMS,MQTT协议,XMPP协议和第三方平台,经过我们对项目需求的考虑之后我们选择了第三方平台推送的小米推送,下面就是小米推送的实现方法. 实现准备 想要用小米推送首先要去小米开发者平台注册申请开发者账号,经过1到3天的审核之后

Android手机端小米推送Demo解析和实现方法

最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消息推送,关于Android推送的解决方案有很多种,有C2DM,轮询, SMS,MQTT协议,XMPP协议和第三方平台,经过我们对项目需求的考虑之后我们选择了第三方平台推送的小米推送,下面就是小米推送的实现方法. 实现准备 想要用小米推送首先要去小米开发者平台注册申请开发者账号,经过1到3天的审核之后

解决方案-java web项目,想实现从手机端浏览器向PC端推送消息。

问题描述 java web项目,想实现从手机端浏览器向PC端推送消息. 要求:实现微信浏览器中向PC端推送消息. 我用DWR在PC端能实现推送消息,但是在手机端浏览器中没有任何效果,不知道是我弄错了还是说DWR本身的原因. 问题:请问哪位大神能够给出一套可行的解决方案? 解决方案 服务器主动向android手机端推送消息---------Linux下实现使用js判断手机端和pc端浏览器内核 解决方案二: 借助服务器中转,你把数据推送到服务器,服务器在送到客户端. 解决方案三: GoEasyWeb

横竖屏切换-android app启动时根据是手机端还是Pad端进行横竖屏判断,以及不同布局

问题描述 android app启动时根据是手机端还是Pad端进行横竖屏判断,以及不同布局 如何判断一个app,如果运行在平板上,就横屏展示,如果运行在手机上就竖屏展示.而且在这两个端不允许横竖屏切换.而且MainActivity得长的不一样.意思就是要有两套布局.需要建什么资源文件夹 解决方案 http://jingyan.baidu.com/article/455a9950aa8aaea16627788a.html

android 爬取手机端数据相关技术解答

问题描述 android 爬取手机端数据相关技术解答 想在公司让做一个android应用程序,就是装在手机端之后可以爬去qq群的聊天记录!小弟现在没有什么头绪!麻烦懂的各位大神提供一下思路! 万分感谢! 解决方案 读取QQ的目录,然后把QQ目录下面的相关文件(这个你要自己分析),也就是聊天记录文件(不排除是数据库),读取到自己的目录或者服务器上,在进行解析就可以了. 解决方案二: 手机上的QQ的聊天记录文件是什么格式,有没有加密?你清楚吗,不清楚这个事情就做不了. 解决方案三: 进入消息管理器,