0

我尝试通过在浏览器中输入值来访问 HTTPS 连接,它似乎工作正常并将我重定向到预期的页面/输出。但是当我使用代码尝试相同时,我无法得到结果。我尝试将 UserAgent 设置为 (Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.1+)。但没有运气。我收到受信任的连接警报,当我单击继续时,我得到响应代码 302。如何实施安全连接证书以禁用受信任的连接警报。

我习惯于 httpsconnection 打开 url 它返回响应代码 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 中工作。我怎样才能获得这些功能。如果无法在黑莓中使用 Httpclient,那么我如何利用等效于 Httpcleint(或)的黑莓 https 连接来使用 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 上。换句话说,服务器指示您执行重定向。您应该调查连接标头,并在名为“Location”的标头中找到一个新的 URI 以继续使用。关闭/完成当前连接并为刚刚获得的重定向 URI 启动一个新连接。

更新

通常好的服务器在成功 POST 后响应 HTTP 302。这是一种已知的Post/Redirect/Get 模式,可防止用户在浏览器页面刷新时两次发布相同的数据(用户可以在桌面浏览器中按 F5)。因此,如果您通过 POST 访问的页面是为普通浏览器设计的,那么这可能只是意味着您的 POST 成功并且您不需要执行重定向请求。至少,如果您需要某些结果评估的响应,那么不要使用 POST 重定向,这次使用 GET。

于 2011-11-11T18:33:17.023 回答