URL读取CodeName One

时间:2014-04-14 15:51:25

标签: url codenameone

我对Codename One比较新。我试图读取URL并将内容保存在String上。我试过了:

private String lectura = "";

private String escritura = "";

/*-------------------------------------------------------
 * Methods
 *-------------------------------------------------------
 */

public Bulbs(int i, char rtype){

    type = rtype;

    number = i;

    status = readCNO(type, number);

}

public String giveStatus(){
    status = readCNO(type, number);
    return status;

}


public void turnBulbOn(){

    writeCNO('B', number, 1);

}

public void turnBulbOff(){

    writeCNO('B', number, 0);

}

public String readCNO(char type, int number){


    ConnectionRequest r = new ConnectionRequest();
    r.setUrl("http://192.168.1.3/arduino/R!" + type + "/" + Integer.toString(number));
    r.setPost(false);

    r.addResponseListener(new ActionListener()
    {

        public void actionPerformed(ActionEvent ev)
        {
            try
            {
                NetworkEvent event = (NetworkEvent) ev;
                byte[] data= (byte[]) event.getMetaData();
                String decodedData = new String(data,"UTF-8");
                System.out.println(decodedData);
                lectura = decodedData;

            } catch (Exception ex)
            {
                ex.printStackTrace();
                lectura = "NoBulb";
            }

        }


    });
    NetworkManager.getInstance().addToQueue(r);

    return lectura;
    }

    public String writeCNO(char type, int number, int action){


        ConnectionRequest r2 = new ConnectionRequest();
        r2.setUrl("http://192.168.1.3/arduino/R!" + type + "/" + Integer.toString(number) + "/"+ action);
        r2.setPost(false);

        r2.addResponseListener(new ActionListener()
        {

            public void actionPerformed(ActionEvent ev)
            {
                try
                {
                    NetworkEvent event = (NetworkEvent) ev;
                    byte[] data= (byte[]) event.getMetaData();
                    String decodedData = new String(data,"UTF-8");
                    System.out.println(decodedData);
                    escritura = decodedData;

                } catch (Exception ex)
                {
                    ex.printStackTrace();
                    escritura = "NoBulb";
                }

            }


        });
        NetworkManager.getInstance().addToQueue(r2);

        return escritura;
}

然而,当我运行它时,控制台会显示一堆错误,如:

  

队列中的重复条目:com.codename1.io.ConnectionRequest:com.codename1.io.ConnectionRequest@22b3c488

非常感谢!

大卫。

1 个答案:

答案 0 :(得分:1)

您正在将两个完全相同的URL添加到队列中,而Codename One会将其检测为可能的错误。如果这是故意的,只需在两个连接请求上调用setDuplicateSupported(true)