Java me LWit4IO(v1.5)连接请求';s readResponse()问题-诺基亚SDK 2.0

Java me LWit4IO(v1.5)连接请求';s readResponse()问题-诺基亚SDK 2.0,java-me,lwuit,nokia-s40,Java Me,Lwuit,Nokia S40,我一直在将现有的J2ME移动应用程序移植到最新的诺基亚SDK 2.0(适用于40系列全触控设备)平台,该应用程序允许用户查看存档的新闻视频 我分别使用LWUIT和LWUIT4IO技术实现应用程序的UI和网络功能 该应用程序已在S40第五版SDK平台模拟器上测试运行。扩展LWUIT4IO的ConnectionRequest类,并利用LWUIT的XMLParser,该应用程序可以成功发送HTTP请求,并从基本上返回XML格式提要类型(包含视频所需元数据)的web服务获取预期响应数据(以下是web服务

我一直在将现有的J2ME移动应用程序移植到最新的诺基亚SDK 2.0(适用于40系列全触控设备)平台,该应用程序允许用户查看存档的新闻视频

我分别使用LWUITLWUIT4IO技术实现应用程序的UI和网络功能

该应用程序已在S40第五版SDK平台模拟器上测试运行。扩展LWUIT4IO的ConnectionRequest类,并利用LWUIT的XMLParser,该应用程序可以成功发送HTTP请求,并从基本上返回XML格式提要类型(包含视频所需元数据)的web服务获取预期响应数据(以下是web服务的URL:)

但由于某些原因,在最新的诺基亚SDK 2.0平台上运行应用程序时,情况并非如此。它在尝试解析(XMLParser.parse())时抛出java.lang.NullPointerExceptionweb服务的InputStream响应。当我跟踪仿真器的网络流量监视器时,对应的发送请求和接收响应-0字节作为内容返回,尽管响应状态为200。显然,XMLParser对象一开始没有要解析的内容

我希望你们能以某种方式阐明这个问题,或者分享任何相关的决议,或者帮助我进一步完善这个问题

下面是连接到Web服务并处理XML响应的SegmentService类(LWiit的ConnectionRequest的子类)的代码:

public class SegmentService extends ConnectionRequest implements ParserCallback {

    private Vector segments;
    private Video segment;

    public SegmentService(String backend) {
        String slash = backend.endsWith("/") ? "" : "/";
        setPost(false);
        setUrl(backend + slash + "nokianewsfeed.aspx");
        addArgument("format", "3gp");
    }

    public void setDateFilter(String date) {
        System.out.println(date);
        addArgument("date", date);
    }

    private Video getCurrent() {
        if (segment == null) {
            segment = new Video();
        }
        return segment;
    }

    protected void readResponse(InputStream input) throws IOException {

        InputStreamReader i = new InputStreamReader(input, "UTF-8"); 
        XMLParser xmlparser = new XMLParser();

        System.out.println("Parsing the xml...");
        Element element = xmlparser.parse(i);
        System.out.println("Root " + element.getTagName());

        int max = element.getNumChildren();
        System.out.println("Number of children: " + max);

        segments = new Vector();

        for (int c = 0; c < max; c++) {
            Element e = element.getChildAt(c);
            System.out.println("segment " + c);

            int len = e.getNumChildren();
            System.out.println("Number of children: " + len);

            for (int d=0; d<len; d++) {
                Element s = e.getChildAt(d);
                String property = s.getTagName();
                System.out.println("key: " + property);
                String value = (s.getNumChildren()>0) ? s.getChildAt(0).getText() : null;
                System.out.println("value: " + value);

                if (property.equals("title")) {
                    getCurrent().setTitle(value);
                } else if (property.equals("description")) {
                    getCurrent().setDescription(value);
                } else if (property.equals("videourl")) {
                    getCurrent().setVideoUrl(value);
                } else if (property.equals("thumburl")) {
                    getCurrent().setThumbUrl(value);
                } else if (property.equals("adurl")) {
                    getCurrent().setAdUrl(value);
                } else if (property.equals("publishdate")) {
                    getCurrent().setPublishDate(value);
                } else if (property.equals("category")) {
                    getCurrent().setCategory(value);
                } else if (property.equals("weburl")) {
                    getCurrent().setWebUrl(value);
                } else if (property.equals("thumburl2")) {
                    getCurrent().setThumb210(value);
                } else if (property.equals("thumburl4")) {
                    getCurrent().setThumb40(value);
                }
            }

            if (segment != null) {
                segments.addElement(segment);
                segment = null;
            }
        }
        fireResponseListener(new NetworkEvent(this, segments));
    }

    public boolean parsingError(int errorId, String tag, String attribute, String value, String description) {
        System.out.println(errorId);
        System.out.println(tag);
        System.out.println(value);
        System.out.println(description);
        return true;
    }
}
公共类分段服务扩展ConnectionRequest实现ParserCallback{
专用向量段;
专用视频段;
公共分段服务(字符串后端){
字符串斜杠=backend.endsWith(“/”):“/”;
setPost(假);
setUrl(后端+斜杠+nokianewsfeed.aspx);
addArgument(“格式”、“3gp”);
}
公共无效setDateFilter(字符串日期){
系统输出打印项次(日期);
添加参数(“日期”,日期);
}
私有视频getCurrent(){
如果(段==null){
段=新视频();
}
返回段;
}
受保护的void readResponse(InputStream输入)引发IOException{
InputStreamReader i=新的InputStreamReader(输入,“UTF-8”);
XMLParser XMLParser=新的XMLParser();
System.out.println(“解析xml…”);
Element=xmlparser.parse(i);
System.out.println(“根”+元素.getTagName());
int max=element.getNumChildren();
System.out.println(“子项数:+max”);
段=新向量();
对于(int c=0;c
可能是因为URL没有返回任何要解析的内容,所以请检查从服务器发送的Http响应代码。