2

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

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

page1 -> page2 -> page3 -> 所需页面

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

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

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

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

有人有类似的问题吗?我将不胜感激任何帮助。

提前致谢!雨果

4

1 回答 1

1

我设法使它工作。

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

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

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

感谢 Charles Forsythe 的提示和帮助。

于 2013-04-03T16:32:17.230 回答