【问题标题】:J2ME HttpConnection infinite redirectJ2ME HttpConnection 无限重定向
【发布时间】:2013-04-02 16:13:59
【问题描述】:

我正在为 GPRS 调制解调器 (Siemens TC65) 开发一个 java 应用程序。 我多次调用一个方法来对不同的 URL 进行 HttpConnection。有时它可以正常工作,但有时我会被我的操作员重定向(HTTP 代码 302)。我遵循 Location 标头中提供的 URL,它返回 200,但它不是我想要的页面。

如果我在 gsm 笔中使用 SIM 卡并通过浏览器访问,有时会发生相同的重定向,但我最终会到达所需的页面。问题是modem不执行javascript,所以我分析了javascript做了什么,过程如下:

page1 -> page2 -> page3 -> 想要的页面

page1 和 page2 对 URL 和参数进行一些 base64 编码,page3 是一个 .aspx。因此,每次我收到重定向时,我都会对我的 URL 进行编码 64 并发送到 .aspx 页面,.aspx 页面返回 302 并在 Location 标头中解码所需的页面。它甚至返回一个带有 ASP.NET_SessionId 的 cookie,我保存并在下一个请求中发送。

但即使我做了所有这些并遵循 .aspx 返回的 URL(与我开头的相同),它只是从头开始,我得到一个无限循环的重定向。

我可以发布代码,但我认为它没有任何问题,因为它工作正常,有时...问题是操作员连续重定向而不运行浏览器。

在尝试从 aspx 服务器进行重定向时,我应该做些什么不同的事情?

有人遇到过类似的问题吗? 我将不胜感激。

提前致谢! 雨果

【问题讨论】:

  • 我很困惑。运行 JavaScript 的能力是否重要?另外,您是否尝试过从有效的浏览器请求中捕获请求标头并将它们与进入无限循环的HttpConnection 请求进行比较?一种可能性(只是猜测)是它正在嗅探用户代理并改变其行为。标题中可能还有其他内容。
  • 抱歉,这篇文章很长,我知道它看起来有点令人困惑。 Javascript 很重要,因为除了 base64 编码之外,从 page2 到 page3 的重定向是由 javascript 完成的。所以我只是在我的程序中复制了这个过程并请求了 page3。是的,我检查了浏览器中的标题,我至少使用了我认为重要的标题。我什至尝试使用无转换标头,如果我的操作员尊重它,我想根本不应该有任何编码。我使用的 User-Agent 我猜是 j2me 的标准,我得到了系统配置文件和配置。
  • 你能把这些网页的网址贴出来吗?我猜——只是猜——可能会发生不同的重定向,因为该站点可能认为您是移动浏览器(基于您的用户代理)。这就是为什么这可能很重要,但这只是一个猜测。
  • 是的,但我也尝试过使用不同的用户代理并且发生了同样的情况。也在浏览器中尝试过,重定向没问题。 Page1=redirect.static.kanguru.pt/Campanhas/redirect1.html Page2=redirect.static.kanguru.pt/Campanhas/…(给谷歌) Page3=redirect.kanguru.pt/RedirectKanguru/…(给谷歌)
  • 好的,所以当我在浏览器中单击第 3 页时,我会转到 Google。 page3是造成无限循环的页面吗?

标签: java redirect java-me httpconnection gprs


【解决方案1】:

我设法让它工作。

我正在做的是用我自己的代码在我的程序中替换 page2 中的 javascript,因为调制解调器无法运行 javascript。并使用结果并将其发送到 page3。这很好,但我实际上并没有向 page2 发出 HTTP 请求。

如果我以正确的顺序请求三个页面,复制 javascript 在我自己的代码中执行的功能并保存 cookie,在 page3 之后,我会收到指向所需网页的重定向,并且不会像使用的那样再次重定向至。我想,既然我做了 page2 所做的一切,我真的不需要提出请求,直接跳到 page3。但是出于某种原因,我不知道为什么,也许 asp 会话实际上是在该页面上开始的,并且没有显示在页面源代码上或服务器监视页面请求。而且我什至不明白为什么运营商需要这样做,我认为它甚至可能会破坏旧手机的 HTTP 连接,因为它并不是真正为无法运行 javascript 的设备设计的。

下次我将使用不同的运算符 =p

感谢 Charles Forsythe 的提示和帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2017-04-10
    • 2017-04-07
    • 2016-12-18
    相关资源
    最近更新 更多