HTTPS连接

问题描述:

我用下面的代码建立HTTPS连接HTTPS连接

HttpsConnection httpConnector = null; 
    InputStream in = null; 
    Document doc ; 
    String content = ""; 

      try 
       { 
       httpConnector = (HttpsConnection)Connector.open(url,Connector.READ_WRITE); 
        httpConnector.setRequestMethod(HttpConnection.GET) ; 
        in = httpConnector.openInputStream(); 
        byte[] data = new byte[in.available()]; 
        int len = 0; 
        int size = 0; 
        StringBuffer raw = new StringBuffer(); 
         while (-1 != (len = in.read(data))) { 
          raw.append(new String(data, 0, len)); 
          size += len; 
         } 
         content = raw.toString().trim(); 
           } 
        catch(Exception ex) 
        { 
         ex.printStackTrace(); 
         return false; 
        } 
        try{ 
        in.close(); 
        in =null; 
        httpConnector.close(); 
        httpConnector =null; 

      }catch(Exception ex) 
      { 
       Dialog.alert("Error:" + ex.getMessage()); 
       return false; 

      } 
      } 

我想我能够建立连接,但值会不来了。我在模拟器测试它,我没有在设备上测试

+0

我能够使用httpconnection使用相同的代码 – rupesh 2010-07-23 21:10:53

我认为你错就错在下面一行:

byte[] data = new byte[in.available()]; 

available()方法只返回多少字节可立即从InputStream读,但是您正在使用它来初始化临时字节数组的大小。因为available()可能返回0,所以你可能正在初始化一个长度为零的数组。

用固定长度数组初始化“数据”会更好。

+0

获取值,但此代码可以正常使用HTTPconnection – rupesh 2010-07-23 21:24:38

+0

这可能只是时间的巧合,HTTP连接对available()有一个正值,而HTTPS可能正在返回0.尝试使用固定长度的字节数组替换它并不会有什么坏处。 – 2010-07-23 21:27:23

+0

我认为没有getLength()输入流 – rupesh 2010-07-23 21:32:55