Blackberry HttpConnection超时
我正在尝试获取一个XML文件,以便使用以下内容进行解析:Blackberry HttpConnection超时,blackberry,Blackberry,我正在尝试获取一个XML文件,以便使用以下内容进行解析: private void getAndParseXML( String _xmlurl ) { HttpConnection xmlcon = null; InputStream input = null; SAXParserFactory spf = null; try { xmlcon = (HttpConnection)Connect
private void getAndParseXML( String _xmlurl ) {
HttpConnection xmlcon = null;
InputStream input = null;
SAXParserFactory spf = null;
try {
xmlcon = (HttpConnection)Connector.open( _xmlurl, Connector.READ ); // open connection to XML source
spf = SAXParserFactory.newInstance(); // set up xml parsers
input = xmlcon.openInputStream(); // set up input stream
SAXParser saxparser = spf.newSAXParser(); // create a new parser object
saxparser.parse( input, this ); // parse operations start here
}
catch( IOException ex ) {
System.out.println( "IOException Caught:\t" + ex.getMessage() ); // set a default item if any exception occurs with retreiving or parsing XML file
}
catch (SAXException ex) {
System.out.println( "SAXException Caught:\t" + ex.getMessage() );
ex.printStackTrace();
}
catch ( IllegalArgumentException ex ) {
System.out.println( "IllegalArgumentException Caught:\t" + ex.getMessage() );
ex.printStackTrace();
}
catch (ParserConfigurationException ex) {
System.out.println( "ParserConfigurationException Caught:\t" + ex.getMessage() );
ex.printStackTrace();
}
finally {
if ( input != null) {
try {
input.close(); // attempt to close all connections
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if ( xmlcon != null ) {
try {
xmlcon.close();
}
catch ( IOException ex ) {
ex.printStackTrace();
}
}
}
} // END ----------------------------------------------------------------------------
但是,我得到一个异常抛出说,连接超时后12秒。这在input=xmlcon.openInputStream()行之后代码>被执行
如果这是相关的,则捕获IOException,并在调用此方法之前确定是否存在活动网络连接。我错过什么了吗
编辑:为了澄清,这将是应用程序中网络连接的第一个实例。在这段代码之前,有一个简单的测试:
private boolean isConnectedToNetwork() {
boolean isConnected = false;
if ( (TransportInfo.isTransportTypeAvailable(TransportInfo.TRANSPORT_TCP_CELLULAR)) || (TransportInfo.isTransportTypeAvailable(TransportInfo.TRANSPORT_TCP_WIFI)) )
if ( (TransportInfo.hasSufficientCoverage(TransportInfo.TRANSPORT_TCP_CELLULAR)) || (TransportInfo.hasSufficientCoverage(TransportInfo.TRANSPORT_TCP_WIFI)) )
isConnected = true;
return isConnected;
}
在尝试检索XML文件之前,确保可以建立连接。Mike,一切正常
然而,这里有一些想法需要考虑:
您可以从浏览器中打开URL吗
您使用什么BB传输打开连接(例如,可能在BES上失败,但在直接TCP或Wi-Fi上可以正常工作)
在本次调用之前,“确定是否存在活动网络连接”的代码是否已关闭检测期间可能已打开的所有连接(如果有)
发现了问题。在本例中,url需要附加“deviceside=true”
,以确保建立直接TCP/IP连接。这确保通过蜂窝网络建立HttpConnection。换句话说,确保连接不是通过Blackberry MDS建立的
此外,还需要进行检查:
if ( (TransportInfo.isTransportTypeAvailable(TransportInfo.TRANSPORT_TCP_WIFI)) && (TransportInfo.hasSufficientCoverage(TransportInfo.TRANSPORT_TCP_WIFI)) )
wi-fi天线打开了。如果上述结果为真,则url(同样是\u xmlurl
)需要进一步添加“interface=wifi”
,以避免蜂窝网络,但仍然可以打开直接TCP/IP连接。是的,可以在浏览器中打开url。我不知道你所说的BB传输是什么意思。我还没有设置在BES上运行(除非这是默认设置)。只能通过蜂窝天线或wi-fi使用TCP/IP。在这个应用程序中,这将是第一个打开连接的实例。好的,我看到您只使用DirectTCP或WiFi BB传输。好吧,我没有看到任何可能阻止它在WifI上工作的东西,而DirectTCP可能有一些问题(例如,一些提供商可能通过设置通过连接发送的最大允许数据量来限制流量)。因此,我的建议是强制使用WiFi,以查看仅使用WiFi BB传输的情况。BB网络传输-仍然超时。但是,与此同时,我的测试设备(仅wifi-无SIM卡)甚至不会显示google.com,当我点击图标时,模拟器中的浏览器(9800)甚至不会出现在前台。我开始怀疑这里还有其他问题。