2013-04-02 61 views
2

我正在開發GPRS調制解調器(西門子TC65)的Java應用程序。 我多次調用一個方法來對不同的URL進行HttpConnection。有時它可以正常工作,但有時我會被我的操作員重定向(HTTP代碼302)。我按照位置標題中提供的URL返回200,但它不是我想要的頁面。J2ME HttpConnection無限重定向

如果我使用在GSM筆和訪問SIM卡瀏覽器,有時會發生相同的重定向,但我最終到達所需的頁面。問題是調制解調器不執行JavaScript,所以我分析的JavaScript做什麼和程序如下:

1頁 - >第2頁 - >第三頁 - >所需的頁面

1和Page 2做一些的base64 URL和參數的編碼,page3是一個.aspx。所以每次我得到一個重定向時,我編碼64我的URL併發送到.aspx頁面,.aspx頁面返回302,並在Location標題中解碼所需的頁面。它甚至會返回一個ASP.NET_SessionId的cookie,我保存併發送下一個請求。

但是即使我做這一切,並按照在.aspx(這是一樣的我開始)返回的URL,它只是從頭開始,我得到重定向的無限循環。

我可以張貼代碼,但我不認爲這有什麼問題,因爲它工作正常,有時...問題是由運營商相繼重定向和不運行的瀏覽器。

任何我應該做的不同,當試圖按照從aspx服務器重定向?

任何人有類似的問題嗎? 我將不勝感激任何幫助。

在此先感謝! 雨果

+1

我很困惑。運行JavaScript的能力是否顯着?另外,您是否試圖從瀏覽器請求中捕獲請求頭並將它們與進入無限循環的'HttpConnection'請求進行比較?一種可能性(只是猜測)是它嗅探用戶代理並改變其行爲。標題中可能還有其他內容。 –

+0

對不起,我知道它看起來很混亂。Javascript非常重要,因爲除了base64編碼外,從page2到page3的重定向都是由javascript完成的。所以我只是在程序中複製了這個過程,並要求page3。 是的,我檢查了瀏覽器中的標題,至少我認爲很重要。我甚至試圖使用無變換標題,如果我的運營商尊重它,我猜根本就不應該有任何編碼。 用戶代理我使用了我認爲是j2me的標準,我得到了系統配置文件和配置。 –

+1

你可以發佈這些網頁的網址嗎?我猜測 - 只是猜測 - 可能會發生不同的重定向,因爲該網站可能認爲您是移動瀏覽器(基於您的用戶代理)。這就是爲什麼這可能很重要,但這只是一個猜測。 –

回答

1

我設法使它工作。

我在做什麼是由我自己的代碼替換的JavaScript在第2頁在我的程序,因爲調制解調器無法運行JavaScript。並使用結果並將其發送到page3。這很好,但我實際上並沒有向page2發送HTTP請求。

如果我以正確的順序請求三個頁面,複製JavaScript在我自己的代碼中做的功能並保存cookie,在第3頁之後,我收到了重定向到所需的網頁並且不再重定向習慣於。我想,因爲我做了所有的工作,我真的不需要提出請求,只是跳到第3頁。但出於某種原因,我不知道爲什麼,也許asp會話實際上是在該頁面上啓動的,並且不會顯示在頁面源代碼上,或者服務器監視頁面請求。我甚至不明白爲什麼運營商需要這樣做,我認爲它甚至可能會破壞來自舊手機的HTTP連接,因爲它不是真正爲無法運行javascript的設備設計的。

下一次,我只需要使用一個不同的運營商= P

感謝查爾斯·科西的提示和幫助。