Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在黑莓5.0及以上版本的J2ME代码中使用wifi调用HTTP URL?_Http_Blackberry_Java Me_Wifi - Fatal编程技术网

如何在黑莓5.0及以上版本的J2ME代码中使用wifi调用HTTP URL?

如何在黑莓5.0及以上版本的J2ME代码中使用wifi调用HTTP URL?,http,blackberry,java-me,wifi,Http,Blackberry,Java Me,Wifi,我正在使用J2ME代码从BlackBerry调用一个web服务。当我尝试使用HttpConnection打开连接时,它只检查GPRS连接。现在,我想检查Wi-Fi连接并通过Wi-Fi呼叫网络服务 下面的代码是我的连接部分。如何更改Wi-Fi连接的代码 public boolean HttpUrl() { HttpConnection conn = null; OutputStream out = null; String url = "http://www.google

我正在使用J2ME代码从BlackBerry调用一个web服务。当我尝试使用
HttpConnection
打开连接时,它只检查GPRS连接。现在,我想检查Wi-Fi连接并通过Wi-Fi呼叫网络服务

下面的代码是我的连接部分。如何更改Wi-Fi连接的代码

public boolean HttpUrl() 
{
    HttpConnection conn = null;
    OutputStream out = null;
    String url = "http://www.google.com";
    try 
    {
        conn = (HttpConnection) new ConnectionFactory().getConnection(url).getConnection();
        if (conn != null) 
        {

            conn.setRequestMethod(HttpConnection.POST);
            conn.setRequestProperty("Content-Length", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");


        }
    } 
    catch (Exception e) 
    {
        return false;
    } 
    finally 
    {
        try 
        {
            out.close();
        } 
        catch (Exception e2) 
        {
        }
    }

    //Only if exception occurs, we close the connection.
    //Otherwise the caller should close the connection himself.
    try 
    {
        conn.close();
    } 
    catch (Exception e1)
    {
    }
    return true;
}
按此方式检查:

HttpConnection conn = null;
String URL = "http://www.myServer.com/myContent;deviceside=true;interface=wifi";
conn = (HttpConnection)Connector.open(URL);

通过以下方式检查:

HttpConnection conn = null;
String URL = "http://www.myServer.com/myContent;deviceside=true;interface=wifi";
conn = (HttpConnection)Connector.open(URL);

建立联系 如果您知道您将只使用Wi-Fi

但是,如果您只需要支持BlackBerry OS 5.0-7.1,我建议您使用
ConnectionFactory
通常,您不会将代码限制为仅使用一个传输,但是,您可能需要先对应用程序进行编码以选择某些传输

比如说,

类连接线程扩展线程
{
公开募捐
{
ConnectionFactory connFact=新的ConnectionFactory();
setPreferredTransportTypes(新的int[]{
TransportInfo.TRANSPORT\u TCP\u WIFI,
TransportInfo.TRANSPORT_BIS_B,
TransportInfo.TRANSPORT\u MDS,
TransportInfo.TRANSPORT\u TCP\u蜂窝
});
ConnectionDescriptor connDesc;
connDesc=connFact.getConnection(“http://www.google.com");
如果(connDesc!=null)
{
HttpConnection-httpConn;
httpConn=(HttpConnection)connDesc.getConnection();
尝试
{
//TODO:在此处设置httpConn请求方法和属性!
final int-iResponseCode=httpConn.getResponseCode();
UiApplication.getUiApplication().invokeLater(新的Runnable())
{
公开募捐
{
对话框。警报(“响应代码:”+
Integer.toString(iResponseCode));
}
});
} 
捕获(IOE异常)
{
System.err.println(“捕获的IOException:
+e.getMessage());
}
}
}
}    
如果Wi-Fi可用,将选择Wi-Fi传输,如果不可用,则使用GPRS连接。我认为5.0+设备通常会考虑这一点

请求属性 此代码

conn.setRequestProperty(“内容长度”、“应用程序/x-www-form-urlencoded”);
这是不对的
Content Length
应该是HTTP POST参数的大小(以字节为单位)

穿线 记住,建立网络连接很慢。不要通过在主/UI线程上运行此代码来阻止用户界面。将代码放入后台线程,以便在请求远程内容时保持UI响应。

建立连接 如果您知道您将只使用Wi-Fi

但是,如果您只需要支持BlackBerry OS 5.0-7.1,我建议您使用
ConnectionFactory
通常,您不会将代码限制为仅使用一个传输,但是,您可能需要先对应用程序进行编码以选择某些传输

比如说,

类连接线程扩展线程
{
公开募捐
{
ConnectionFactory connFact=新的ConnectionFactory();
setPreferredTransportTypes(新的int[]{
TransportInfo.TRANSPORT\u TCP\u WIFI,
TransportInfo.TRANSPORT_BIS_B,
TransportInfo.TRANSPORT\u MDS,
TransportInfo.TRANSPORT\u TCP\u蜂窝
});
ConnectionDescriptor connDesc;
connDesc=connFact.getConnection(“http://www.google.com");
如果(connDesc!=null)
{
HttpConnection-httpConn;
httpConn=(HttpConnection)connDesc.getConnection();
尝试
{
//TODO:在此处设置httpConn请求方法和属性!
final int-iResponseCode=httpConn.getResponseCode();
UiApplication.getUiApplication().invokeLater(新的Runnable())
{
公开募捐
{
对话框。警报(“响应代码:”+
Integer.toString(iResponseCode));
}
});
} 
捕获(IOE异常)
{
System.err.println(“捕获的IOException:
+e.getMessage());
}
}
}
}    
如果Wi-Fi可用,将选择Wi-Fi传输,如果不可用,则使用GPRS连接。我认为5.0+设备通常会考虑这一点

请求属性 此代码

conn.setRequestProperty(“内容长度”、“应用程序/x-www-form-urlencoded”);
这是不对的
Content Length
应该是HTTP POST参数的大小(以字节为单位)

穿线
记住,建立网络连接很慢。不要通过在主/UI线程上运行此代码来阻止用户界面。将代码放在后台线程中,以便在请求远程内容时保持UI响应。

据我所知,BlackBerry建议只编写“interface=wifi”代码。我被告知添加“deviceside=true”是不必要的,可能会混淆连接选择逻辑。也就是说,Nate的答案也是我推荐的方法。据我所知,BlackBerry的建议是只编码“interface=wifi”。我被告知添加“deviceside=true”是不必要的,可能会混淆连接选择逻辑。也就是说,内特的答案也是我推荐的方法。