如何在Blackberry的Object Choice Field中显示HTTP响应

时间:2013-04-10 07:20:13

标签: http blackberry choicefield

我正在使用此代码从服务器读取响应。

public static String getContentString(HttpConnection Connection) throws IOException
{
    String Entity=null;
    InputStream inputStream;
    inputStream = Connection.openInputStream();//May give network io
    StringBuffer buf = new StringBuffer();
    int c;
    while ((c = inputStream.read()) != -1) 
    {
         buf.append((char) c);
    }

    //Response Formation            
    try
    {
        Entity = buf.toString();
        return Entity;
    }
    catch(NullPointerException e)
    {
        Entity = null;
        return Entity;
    }

}

我需要在对象选择字段中显示此实体。 例如: 假设我得到响应实体= ThisIsGoingToGood

然后,我需要在对象选择下拉列表中显示以下方式。

请告诉我如何实现这一目标。

2 个答案:

答案 0 :(得分:0)

根据Nate的回答 - 试试这个 -

ObjectListField ol = new ObjectListField(ObjectListField.ELLIPSIS);
ol.setSize(words.size()); //Where words is the vector 
for (int i = 0; i < size; i++)
    {
ol.insert(i, words.elementAt(i));
}
add(ol);

答案 1 :(得分:0)

此解决方案假定:

  • 字符串的 Camel Case 格式始终为开始,并带有大写字母。

  • 即使是首字母缩略词,也只使用一行中的一个大写字符。例如,“HTTP响应”将写为"HttpResponse"

public static Vector getContentStrings(HttpConnection connection) throws IOException {
    Vector words = new Vector();

    InputStream inputStream = connection.openInputStream();
    StringBuffer buf = new StringBuffer();
    int c;
    while ((c = inputStream.read()) != -1) 
    {
        char character = (char)c;
        if (CharacterUtilities.isUpperCase(character)) {
            // upper case -> new word
            if (buf.length() > 0) {
                words.addElement(buf.toString());
                buf = new StringBuffer();
            }
        }
        buf.append(character);
    }
    // add the last word
    words.addElement(buf.toString());

    return words;
}

然后,您的Vector将有一个很好的ObjectChoiceField选项。insert()。然后你可以{{1}}他们,如Signare的回答所示。

注意:也要记得关闭你的溪流。不过,我会留给你决定你什么时候完成它。