【问题标题】:Enable javascript in https or http POST blackberry在 https 或 http POST blackberry 中启用 javascript
【发布时间】:2011-11-16 05:53:08
【问题描述】:

我正在尝试使用 POST 方法连接 https 连接。操作系统版本为 6.0,当我在 broswer 中调用我的 url 时,我得到了正确的响应,但在我的应用程序中,我得到了错误的响应。我想邮寄用户代理。

conn = (HttpsConnection) Connector.open(Url, Connector.READ_WRITE);
conn.setRequestMethod(HttpsConnection.POST);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.1+");
conn.setRequestProperty("Content-length", ""+userAgent.getBytes().length);
URLEncodedPostData oPostData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);

oPostData.append("User-Agent",userAgent);
OutputStream finalOut = conn.openOutputStream();   
finalOut.write(oPostData.getBytes()); 
finalOut.flush();    
finalOut.close();           
rc = conn.getResponseCode(); 

我收到响应代码 302 但它的响应错误。所以我的客户说“您需要在应用程序中启用 JS 代码,因为浏览器重定向正确”。 请帮我如何在代码中启用JS?

【问题讨论】:

    标签: javascript http blackberry https


    【解决方案1】:

    您正在与服务器建立一个直接的单个 http 连接,并且您将得到一个响应(如果连接成功)。由于您没有使用浏览器,因此与 Javascript 无关。

    302 是重定向响应;这意味着服务器希望客户端连接到其他地方。我不记得 OTTOMH 是否 BB 的连接器支持自动重定向,但如果是这样,您可能想要启用它。

    【讨论】:

    • 运行良好的安卓代码是 .KeyStore trustStore KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null);SSLSocketFactory sf = new MySSLSocketFactory(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);WebView ua = new WebView(this).getSettings().getUserAgentString();HttpProtocolParams.setUserAgent(params, ua); HttpParams 参数 = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); HttpProtocolParams.setUserAgent(params, ua);
    • 但是 BB 给出了错误的响应。如何在我的 https POST 中启用 JS 并设置 User-Agent ?
    【解决方案2】:

    我在我正在构建的原生 BB 应用程序中遇到了类似的情况。部分问题在于,您使用哪个特定的“通信通道”连接到网络?您肯定已经了解到,BB 有大约 6 个不同的通道(不包括 USB 或蓝牙),每个通道都有自己的方式来设置和建立手机和后端之间的连接。

    查看 ConnectionFactory、首选传输类型、ConnectionDescriptors 和其他相关类以帮助简化此操作。

    接下来,这对您来说是个问题 - 就像对我一样 - 取决于您最终用于连接的连接,您可能会收到来自服务器的 302 重定向错误。如果确实发生这种情况,这不是什么大问题...只需检查是否存在将添加的“位置”标头字段,这将使您知道您应该使用哪个新 URL 来获取所需的资源。

    .... 类似以下内容:

    if (httpCon.getResponseCode() == 302 && httpCon.getHeaderField("Location") != null)
    {
        String redirectedURL = httpCon.getHeaderField("Location");
        // use this in your communications to get your content.
    }
    

    【讨论】:

    • 在 andriod 和 iphone http 连接中具有自动重定向选项,但对于黑莓,我们想要手动重定向。所以我手动重定向并发布了关于“stackoverflow.com/questions/8094615/…”的问题。但没用,我不知道为什么 BB 在安卓和 iPhone 中运行良好的地方不能正常工作。所以我试图在代码中启用 JS。我也提到了“codetrips.blogspot.com/2007/04/http-post-from-j2me-midlet.html”来进行后期连接。
    • Hai CirrusFlyer 能否提供您克服 https 问题的代码
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多