blackberry无法连续向服务器发送url请求

时间:2011-12-01 10:22:17

标签: url blackberry

这是我写的用于使用线程发送url请求的代码:

   while(true)
       { 
         String url="http://192.168.1.7:8084/SFTS/updateLocation.jsp?empid=12304&lat=16.23&lon=21.998;interface=wifi";
         try{

             StreamConnection conn = (StreamConnection)Connector.open(url, Connector.READ_WRITE);
             conn.openInputStream();
             Thread.sleep(30*1000); 
             conn.close();
            }catch(Exception e)
                 {
                  e.printStackTrace();   
                 }
        try {
            Thread.sleep(30*1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
         }

我用过这个帖子的代码:

    Calendar cal=Calendar.getInstance();
    long time=cal.get(Calendar.HOUR);
   add(new RichTextField(String.valueOf(time)));

(new test()).start();

通过使用此代码,我能够成功发送一个请求,但在该服务器没有收到其他请求之后。请给我一个解决方案。

1 个答案:

答案 0 :(得分:2)

首先,当你使用像这样的while循环时,你不应该把try放在try方法中。

 while(true)
   { 
    try{
        String url="http://192.19.18.10:8084/SFTS/updateLocation.jsp?empid=12304&lat="+lan+".23&lon=21.998;interface=wifi";
        StreamConnection conn = (StreamConnection)Connector.open(url, Connector.READ_WRITE);
        conn.openInputStream();;
    }catch(Exception e)
    {
        e.printStackTrace();   
    }
    try {
        Thread.sleep(30*1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
     }

其次,您不断尝试创建新流而不先关闭先前的连接。阅读StreamConnection如何有效工作,或者只是使用ConnectionFactory而不是StreamConnection。

    ConnectionFactory connFact = new ConnectionFactory();
    ConnectionDescriptor connDesc;
    connDesc = connFact.getConnection(url);
    if (connDesc != null) {
                        try {
                            HttpConnection httpConn;
                            httpConn = (HttpConnection) connDesc.getConnection();
                            httpConn.close();

                        } catch (IOException e) {
                                System.err.println("Caught IOException: " + e.getMessage());
                        }

以上是适用于OS 5及更高版本,在您的情况下...因为连接似乎第一次工作,在您现有的代码中我会尝试使用以下方式关闭连接:

conn.close();