0

次のコードでサーバーがヒットしますが、POSTメソッドで変数も送信したいと思います。

しかし、それは私にnullポインタ例外を与えるだけです。それはと関係がありOutputStreamます。私はチェックpostDataしました...それはいくつかのアドレスを持っています、それはそれがnullではないことを意味します。

では、なぜnullポインター例外が発生するのでしょうか。

ConnectionFactory connFact = new ConnectionFactory();
ConnectionDescriptor connDesc;
try {
    connDesc = connFact.getConnection("http://example.com/login.php", Connector.READ_WRITE, returnContent);
    httpConn.setRequestMethod(HttpConnection.POST);
    httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    URLEncodedPostData encPostData = new URLEncodedPostData("UTF-8", false);
    encPostData.append("count", "Hell Yeah!");
    byte[] postData = encPostData.toString().getBytes("UTF-8");

    httpConn.setRequestProperty("Content-length", String.valueOf(postData.length));
    Dialog.alert("Post Data: " + postData);

    OutputStream os = httpConn.openOutputStream();
    os.write(postData);
    os.flush();
    httpConn = (HttpConnection) connDesc.getConnection();

    final int iResponseCode = httpConn.getResponseCode();
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            //Dialog.alert("Response code: " +  Integer.toString(iResponseCode));
        }
    });
} catch (IOException e) {
    System.err.println("Caught IOException: " + e.getMessage());
}
4

2 に答える 2

2

ConnectionFactory.getConnection(String url, int transportType, String ConnectionUID)メソッドを誤用しています。たとえば、渡すものを確認してくださいtransportType...

APIが戻り値について言うことは次のとおりです。

戻り値:接続を確立できる場合はConnectionDescriptor。それ以外の場合はnull

したがって、失敗して戻りますnull。そしてそれがあなたがNPEを手に入れる理由です。

更新

より単純なAPIを使用することをお勧めしますConnectionFactory.getConnection(String url)

ConnectionDescriptor cd = connFact.getConnection("http://example.com/login.php");
if (cd == null) {
    // throw an error signalling there is no connectivity right now
}
HttpConnection httpConn = (HttpConnection) cd.getConnection();
// the rest of the code working with httpConn ..
于 2012-11-14T13:59:02.050 に答える
1

リンクされた回答を見て、「ログイン」手順の実装がニーズに合っているかどうかを確認してください: ブラックベリーの認証ユーザー名パスワードURL

于 2012-11-14T12:52:20.247 に答える