0

我是 BlackBerry 应用程序开发的新手。HttpConnectionhttpcon.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错误。

4

2 回答 2

2

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

您的日食错误看起来像这样吗?

在此处输入图像描述

getResponseCode()HttpConnection类中的一个方法。这是 RIM 的代码,不是你的。您通常不需要进入该代码。只需在调试时越过那条线。您唯一应该想看到的是该方法的结果,而不是内部发生的情况。

即使net_rim_api.jar包含在您的项目中,它也只会为您提供 RIM 类的二进制版本,包括HttpConnection. 它不提供该类的 Java源代码。为了进入一个方法,你也需要有源代码。

于 2012-12-31T10:39:54.843 回答
1

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

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

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

于 2013-01-02T06:44:29.607 回答