Eclipse BlackBerry App中未找到源错误

时间:2012-12-28 14:39:38

标签: java eclipse mobile blackberry java-me

我是BlackBerry应用程序开发的新手。在HttpConnection httpcon.getResponseCode()方法中,我发现了一个愚蠢的错误,导致找不到源错误。

拜托,任何人都可以搞清楚这个错误吗?

这是我的方法:

        net.rim.device.api.io.transport.ConnectionFactory cf = new   net.rim.device.api.io.transport.ConnectionFactory();
        httpConn = (HttpConnection) cf.getConnection(url).getConnection();

        httpConn.setRequestMethod(HttpConnection.POST);
        httpConn.setRequestProperty("User-Agent",
                "Profile/MIDP-2.0 Confirguration/CLDC-1.0");
        httpConn.setRequestProperty("Accept_Language", "en-US");
        httpConn.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");

        httpConn.setRequestProperty("Content-Length",
                Integer.toString(postData.length));
        os = httpConn.openOutputStream();
        os.write(("LoginID=yahoo@sol.com&Password=yah123")
                .getBytes("UTF-8"));
        os.flush();
        os.close();
        try {
            responseCode = httpConn.getResponseCode();
        } catch (IOException ex1) {
            //check if it's eof, if yes retrieve code again
            if (-1 != ex1.getMessage().indexOf("EOF")) {
                try {
                    responseCode = httpConn.getResponseCode();
                } catch (IOException ex2) {
                    System.out.println(ex2.getMessage());
                    // handle exception
                }
            } else {
                System.out.println(ex1.getMessage());
                // handle exception
            }
        }
        int status = httpConn.getResponseCode();

        if (status == HttpConnection.HTTP_OK) {

            InputStream input = httpConn.openInputStream();

            byte[] bytes = IOUtilities.streamToBytes(input);

            StringBuffer raw = new StringBuffer(new String(bytes));
            raw.insert(0, "bytes received]\n");
            raw.insert(0, bytes.length);
            raw.insert(0, '[');

            url = raw.toString();

            input.close();
        } else {
            url = "response code = " + status;
        }
        httpConn.close();
    } catch (IOCancelledException e) {
        System.out.println(e.toString());
        return "";
    } catch (IOException e) {

        return "";
    }

    return "";
}

更新:我不想进入getResponseCode()。 Eclipse在此时停止执行,并显示 Source Not Found 错误。

2 个答案:

答案 0 :(得分:2)

  

@Nate是的,我们步入方法,只有当我们得到运行时错误时才会显示错误。当调用Getresponsecode()时会显示错误

你的eclipse 错误是这样的吗?

enter image description here

getResponseCode()HttpConnection类中的一种方法。这是RIM的代码,不是你的代码。您通常不需要将转换为该代码。调试时,只需在该行。您唯一想看的是该方法的结果,而不是内部发生的事情。

即使您的项目中包含net_rim_api.jar,它也只是为您提供RIM类的二进制版本,包括HttpConnection。它没有为该类提供Java 代码。要将转换为方法,您还需要拥有源代码。

答案 1 :(得分:1)

我发现了我的错误。当在该URL中调用HttpConnection. getResponseCode()时,我们必须添加deviceside = true,然后只调用getresponsecode()而不抛出任何http异常。

例如: httpClient ht = new httpClient(); String str = ht.getHttpClientResponse("https://www.google.co.in;deviceside=true",post);

注意: (来自@Nate评论) 我们并不总是希望您的连接字符串中包含deviceside=true。这取决于您是在设备上运行还是在模拟器上运行,以及可用的网络类型。