HTTP连接参数

时间:2011-09-19 09:11:48

标签: http blackberry java-me edge

我正在以下列方式使用HTTP连接:

         HttpConnection _httpConnection = null;

         try {
             _httpConnection = (HttpConnection)Connector.open(_url);
         } catch(Exception e) { }

        byte [] postDataBytes = _postData.getBytes();
        _httpConnection.setRequestMethod(HttpConnection.POST);
        _httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
        _httpConnection.setRequestProperty("Content-Language", "en-US");
        _httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        _httpConnection.setRequestProperty("Connection", "close");
        _httpConnection.setRequestProperty("Content-Length", Integer.toString(_postData.getBytes().length));

        os = _httpConnection.openOutputStream();
        os.write(postDataBytes);
        os.flush();

此HTTP连接需要参数才能成功打开。例如,在WIFI网络上,它需要将“; deviceside = true; interface = wifi”添加到URL中。

问题出在EDGE连接上。每个国家/地区都需要添加不同的参数。例如,在黎巴嫩,它需要“; deviceside = false”,但在KSA中,如果我添加此参数,则连接将无法打开。在美国,它需要不同类型的参数。问题是如何为具有相同参数的所有国家/地区建立HTTP连接。因此无论在何处下载,应用程序都将成功建立互联网连接。

任何人都可以帮忙解决这个问题吗?提前致谢

3 个答案:

答案 0 :(得分:4)

欢迎来到BlackBerry上令人困惑的网络传输世界!您需要从文章Connecting your BlackBerry - http and socket connections to the world开始。

这是一个简单的例子,“只是给我一个连接”(注意,你需要添加适当的错误处理;同样,下面代码中的myURL应该没有附加连接描述符信息):

ConnectionFactory factory = new ConnectionFactory();
ConnectionDescriptor descriptor = factory.getConnection(myURL);
if (descriptor != null) {
    _httpConnection = (HttpConnection) descriptor.getConnection();
    ...
}

答案 1 :(得分:0)

尝试使用此链接melick-rajee.blogspot.com中提到的方法并将其用作

_url = "http://www.example.com";

_httpConnection = (HttpConnection)Connector.open(_url + getConnectionString());

您必须签署应用程序才能使用此应用程序将显示异常。 要签署您的申请,请转到Code Signing Keys

答案 2 :(得分:0)

要使用connectionFactory,您似乎需要设置BisBOptions

试试这个:

    connFact = new ConnectionFactory();
    connFact.setTransportTypeOptions(TransportInfo.TRANSPORT_BIS_B,
                    new BisBOptions("mds-public"));