2011-11-11 10 views
0

ブラウザに値を入力してHTTPS接続にアクセスしようとしましたが、正常に動作していると思われ、予想されるページ/出力にリダイレクトされます。しかし、コードを使って同じことを試みたとき、私は結果を得ることができません。私はUserAgentを、AppleWebKit/534.1 +(Geckoのようなバージョン/ 6.0.0.141 Mobile Safari/534.1 +)のように設定してみました(Mozilla/5.0(BlackBerry U、BlackBerry 9800;しかし、運がない。私は信頼できる接続アラートを取得しています。続行をクリックすると、応答コード302.Howを取得して、信頼できる接続アラートを無効にするためのセキュアな接続証明書を実装できます。Blackberry User-Agentとhttps Redirect url

私はそれが私が

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を取得しています役に立たないと確認応答コード302.Againを返すURLを開くために名前はhttpsConnectionするために使用しています。

EDITED:

はまたHTTPClientのと同等の機能が、名前はhttpsConnectionでの作業であることを取得するにはいくつかのアイデアを与えてください。どうすればそれらの機能を手に入れることができますか?ブラックベリーでHttpclientを使用する可能性がない場合、HTTPS Connectionを使用して自動リダイレクトを取得するには、Httpcleint(または)に相当するBlackberry https接続をどのように利用できますか? Connector.openとき

(URL)excutes iは、間違った応答が表示された出力コンソールでこの

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

のように取得しています。

答えて

1

私はこれは完全に予想される動作である応答コード302

を取得し続けクリックしたとき、私は、信頼関係接続のアラートを取得しています。

302 means要求されたリソースは他のURIにあります。つまり、サーバーはリダイレクトを実行するように指示します。接続ヘッダーを調査し、 "Location"という名前のURIで新しいURIを見つけることができます。現在の接続をクローズ/ファイナライズし、ちょうど得られたリダイレクトURIのために新しい接続を開始します。

UPDATE

通常は良いのサーバーが成功したPOSTの後にHTTP 302で応答します。これは、ユーザがブラウザページの更新時に同じデータを掲示するのを防ぐためのものです(ユーザはデスクトップブラウザでF5キーを押します)。Post/Redirect/Get patternしたがって、POST経由でアクセスしているページが通常のブラウザ用に設計されている場合、POSTが成功し、リダイレクト要求を実行する必要はありません。少なくとも、結果の評価にレスポンスが必要な場合は、POSTを使用してリダイレクトしないでください。今回はGETを使用します。

+0

ありがとうございます。ブラウザの情報をurlにuseragentで送信したいのですが、正しい出力が得られます。私はos6.0を使ってブラウザで試してみましたが、適切な出力が得られました。同じ方法で、私はhttpconnectionにuseragentを投稿し、302の応答を得ました。私はGETメソッドを使用しましたが、同じ302応答を得ています。 – Gopinath

+0

conn.getHeaderField( "location").tim()を使用してリダイレクトURLを取得しました。正しい方法ですか?私はHttp GETのための新しいメソッドを使用したが、使用しなかった。 – Gopinath

+0

userAgent = System.getProperty( "browser.useragent"); conn.setRequestProperty( "User-Agent"、userAgent); – Gopinath