关键隧道故障异常。怎么解决这个问题

时间:2011-12-12 14:01:43

标签: url blackberry connection

我编写了以下代码,将位置坐标发送到服务器:

setTitle("version 5.0");
    Criteria criteria = new Criteria();
    criteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
    criteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
    criteria.setCostAllowed(true);
    criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);

   // bc.setFailoverMode(GPSInfo.GPS_MODE_ssCDMA_MS_ASSIST, 2, 100);
    try {
        LocationProvider lp=LocationProvider.getInstance(criteria);
        if(lp !=null)
        {
        Location loc=null;
    //  while(loc==null)
    //  {   
            loc=lp.getLocation(-1);
    //  }
        if(loc!=null){
            add(new EditField(loc.getQualifiedCoordinates().getLatitude()+"\n"+loc.getQualifiedCoordinates().getLongitude(),""));
        }
        else 
            add(new EditField("unable to find the location provider", ""));
        }
        else
        {
        add(new EditField("unable to find the location provider", ""));
        }
    } catch (LocationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ButtonField b = new ButtonField("Send");
    add(b);
    b.setChangeListener(new FieldChangeListener() {

        public void fieldChanged(Field field, int context) {
            // TODO Auto-generated method stub
            try{
                String url="http://56.91.532.72:8084/SFTS/updateLocation.jsp?empid=12304&lat=16.9477&lon=82.23970;deviceside=true";
                Dialog.alert(url);
                ConnectionFactory factory = new ConnectionFactory();

                 // use the factory to get a connection
                 ConnectionDescriptor conDescriptor = factory.getConnection(url, TransportInfo.TRANSPORT_TCP_CELLULAR,null);


                 if ( conDescriptor != null ) {
                    HttpConnection  conn = (HttpConnection) conDescriptor.getConnection();  
                    Dialog.alert("http");
                    //conn.setRequestMethod(HttpConnection.GET);
                    Dialog.alert("conn.setre");
                    int responseCode = conn.getResponseCode();
                    Dialog.alert(Integer.toString(responseCode));
                    if(responseCode == HttpConnection.HTTP_OK)
                    {
                        Dialog.alert("OK");
                        InputStream data = conn.openInputStream();
                        StringBuffer raw = new StringBuffer();
                        byte[] buf = new byte[4096];
                        int nRead = data.read(buf);
                        while(nRead > 0)
                        {
                            raw.append(new String(buf, 0, nRead));
                            nRead = data.read(buf);
                        }

                    }
                }
            }catch(Exception e){
                    Dialog.alert(e.getMessage());
                }
        }
    }); 

我收到异常关键隧道故障。但我能够正确检索位置坐标。我正在使用带有airtel sim的黑莓8520,它支持数据服务。实际上这个应用程序在5.0版本的移动设备上运行良好。但它在我从4.6.1.3升级到5.0.0的移动设备中不起作用可能是什么问题?请给我一个解决方案。谢谢

我也试过以下网址:

  1. http://56.91.532.72:8084/SFTS/updateLocation.jsp?empid=12304&lat=16.9477&lon=82.23970;deviceside=true;apn=null
  2. http://56.91.532.72:8084/SFTS/updateLocation.jsp?empid=12304&lat=16.9477&lon=82.23970;deviceside=true;apn=airtelgprs.com
  3. 我还在手机中启用了apn设置

1 个答案:

答案 0 :(得分:1)

这是因为你还没有正确设置apn。当您使用直接tcp时,必须设置apn才能连接到网络。

此外,网络连接应在单独的线程上完成。