0

私はBlackBerryアプリケーション開発に不慣れです。メソッド内でソースが見つからないというエラーが発生しているときにHttpConnection、1つのばかげたエラーが発生しました。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はその時点で実行を停止し、SourceNotFoundエラーを表示しています。

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を追加する必要があります。そうすると、http例外をスローせずにgetresponsecode()のみが呼び出されます。

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

deviceside=true注:(@Nateコメントから)接続文字列が常に必要なわけではありません。これは、デバイスで実行しているかシミュレーターで実行しているか、および使用可能なネットワークの種類によって異なります。

于 2013-01-02T06:44:29.607 に答える