0

ブラウザに値を入力して HTTPS 接続にアクセスしようとしましたが、正常に動作しているようで、期待されるページ/出力にリダイレクトされます。しかし、コードを使用して同じことを試みたとき、結果を得ることができません。UserAgent を (Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (Gecko のような KHTML) Version/6.0.0.141 Mobile Safari/534.1+) として設定しようとしました。しかし、運がありません。信頼できる接続のアラートが表示されます。[続行] をクリックすると、応答コード 302 が表示されます。安全な接続証明書を実装して、信頼できる接続のアラートを無効にするにはどうすればよいですか。

URLを開くためにhttps接続に慣れていますが、応答コード302が返されます。

if (rc == HttpConnection.HTTP_TEMP_REDIRECT
            || rc == HttpConnection.HTTP_MOVED_TEMP
            || rc == HttpConnection.HTTP_MOVED_PERM) {
    String location = conn.getHeaderField("location").trim();
    System.out.println("location========"+location);
    try {
        Url = location;
        newhttpConn = (HttpConnection) Connector.open(Url, Connector.READ_WRITE);
        newhttpConn.setRequestMethod(HttpConnection.POST);
        newhttpConn.setRequestProperty("User-Agent", 
                System.getProperty("browser.useragent"));
    } catch (Exception e) {                               
        System.out.println( e.toString());            
    }

しかし、リダイレクトURLから同じ302を取得しています。

編集:

また、HTTPClient と同等の機能を HTTPSConnection で動作させるためのアイデアを教えてください。これらの機能を取得するにはどうすればよいですか。Blackberry で Httpclient を使用する可能性がない場合、HTTPS 接続を使用して自動リダイレクトを取得するために、Httpcleint と同等の Blackberry https 接続を利用するにはどうすればよいですか?

connector.open(url) が実行されると、このようになります

SSL:->CH
SSL:<-SH
SSL:<-SC
SSL:<-SHD
TLS:->CKE
SSL:->CCS
TLS:->F
TLS:<-F

出力コンソールに間違った応答が表示されます。

4

1 に答える 1

1

信頼できる接続のアラートが表示されます。[続行] をクリックすると、応答コード 302 が表示されます。

これは完全に予想される動作です。

302 は、要求されたリソースが他の URI にあることを意味します。つまり、サーバーはリダイレクトを実行するように指示します。接続ヘッダーを調査する必要があります。「場所」という名前のヘッダーで、続行する新しい URI が見つかります。現在の接続を閉じて終了し、取得したばかりのリダイレクト URI に対して新しい接続を開始します。

更新

通常、適切なサーバーは、POST が成功した後に HTTP 302 で応答します。これは、既知のPost/Redirect/Get パターンで、ユーザーがブラウザー ページの更新時に同じデータを 2 回投稿するのを防ぎます (ユーザーはデスクトップ ブラウザーで F5 を押す場合があります)。したがって、POST 経由でアクセスしているページが通常のブラウザー用に設計されている場合、これは POST が成功したことを意味するだけであり、リダイレクト リクエストを実行する必要はありません。少なくとも、何らかの結果評価のために応答が必要な場合は、POST を使用してリダイレクトせず、今回は GET を使用してください。

于 2011-11-11T18:33:17.023 に答える