已解决

[入门问题] j2me 访问 HTTPS

悬赏金额: 1 学分   学分是什么

有兄弟在J2ME上实现过访问HTTPS的应用么。求指教
javax.microedition.pki.CertificateException: Certificate was issued by an unrecognized entity

最佳答案 sghi788
//向服务器post请求       
        public void postViaHttpConnection(String strReq,HttpPosterListener listener)
        {
        HttpConnection httpConn = null;
        DataInputStream inStream = null;
        OutputStream outStream = null;
        int rspnsCode;

        try {
                //获取http连接
                httpConn = (HttpConnection)Connector.open(Parameters.HttpServerUrl);

                //设置基本的消息头
            httpConn.setRequestMethod(HttpConnection.POST);  //POST 方法
                httpConn.setRequestProperty("User-Agent", Parameters.HttpReqUsrAgent); //客户端标识
               
                if(strReq!=""){   
                       
                        byte[] sndDat = ToolKitEx.str2Byte(strReq);  //将消息编码成UTF
                        if(sndDat != null){
                                httpConn.setRequestProperty("CharsLength", Integer.toString(sndDat.length));
                                outStream = httpConn.openOutputStream();
                                outStream.write(sndDat);  //该方法会自动在在http头中添加Content-Length,但大小写不一定
                        }else{
                                System.out.println("字符串转换为UTF出错");
                                return;
                        }
                }
               
                //等待服务器的响应
            rspnsCode = httpConn.getResponseCode();
            if ( (httpConn.getHeaderField("Server").equals(Parameters.HttpRspnsServer))||
                      !(rspnsCode==SysMsg.MsgType_RsltAccept || rspnsCode == SysMsg.MsgType_RsltRefuse)){
                   
                    System.out.println("服务器已有回应");                       
                   
                    HttpResponse rspns = null;
                    int nRead = -1;
                   
                    byte[] rdBuf = null;
                    int len = (int)httpConn.getLength();
                   
                if (len > 0) {         
                         rdBuf  = new byte[len];   
                             inStream = httpConn.openDataInputStream();
                             nRead = inStream.read(rdBuf);  
                             
                         if(nRead != -1){ //服务器发回的消息息都有消息体                                     
                                rspns = new HttpResponse(rspnsCode,rdBuf);
                                listener.OnReceiveRspns(rspns);
                         }
                }
            }else{ //丢掉不合法服务器发来的任何消息                   
                    System.out.println("收到非法消息( "+rspnsCode+","+httpConn.getHeaderField("Server")+")");
            }           
            
        } catch (Exception ex) {
            System.out.println("HttpPoster socket R/W failed:"+ex.getMessage());
            listener.OnMsgPostErr("发送HTTP请求失败:"+ex.getMessage());
        } finally {
                try{
                    if (inStream != null)
                            inStream.close();
                    if (outStream != null)
                            outStream.close();
                    if (httpConn!= null)
                        httpConn.close();
                } catch (Exception ex) {
                System.out.println("HttpPoster socket close failed:"+ex.getMessage());
                }
        }
    }
//向服务器post请求       
        public void postViaHttpConnection(String strReq,HttpPosterListener listener)
        {
        HttpConnection httpConn = null;
        DataInputStream inStream = null;
        OutputStream outStream = null;
        int rspnsCode;

        try {
                //获取http连接
                httpConn = (HttpConnection)Connector.open(Parameters.HttpServerUrl);

                //设置基本的消息头
            httpConn.setRequestMethod(HttpConnection.POST);  //POST 方法
                httpConn.setRequestProperty("User-Agent", Parameters.HttpReqUsrAgent); //客户端标识
               
                if(strReq!=""){   
                       
                        byte[] sndDat = ToolKitEx.str2Byte(strReq);  //将消息编码成UTF
                        if(sndDat != null){
                                httpConn.setRequestProperty("CharsLength", Integer.toString(sndDat.length));
                                outStream = httpConn.openOutputStream();
                                outStream.write(sndDat);  //该方法会自动在在http头中添加Content-Length,但大小写不一定
                        }else{
                                System.out.println("字符串转换为UTF出错");
                                return;
                        }
                }
               
                //等待服务器的响应
            rspnsCode = httpConn.getResponseCode();
            if ( (httpConn.getHeaderField("Server").equals(Parameters.HttpRspnsServer))||
                      !(rspnsCode==SysMsg.MsgType_RsltAccept || rspnsCode == SysMsg.MsgType_RsltRefuse)){
                   
                    System.out.println("服务器已有回应");                       
                   
                    HttpResponse rspns = null;
                    int nRead = -1;
                   
                    byte[] rdBuf = null;
                    int len = (int)httpConn.getLength();
                   
                if (len > 0) {         
                         rdBuf  = new byte[len];   
                             inStream = httpConn.openDataInputStream();
                             nRead = inStream.read(rdBuf);  
                             
                         if(nRead != -1){ //服务器发回的消息息都有消息体                                     
                                rspns = new HttpResponse(rspnsCode,rdBuf);
                                listener.OnReceiveRspns(rspns);
                         }
                }
            }else{ //丢掉不合法服务器发来的任何消息                   
                    System.out.println("收到非法消息( "+rspnsCode+","+httpConn.getHeaderField("Server")+")");
            }           
            
        } catch (Exception ex) {
            System.out.println("HttpPoster socket R/W failed:"+ex.getMessage());
            listener.OnMsgPostErr("发送HTTP请求失败:"+ex.getMessage());
        } finally {
                try{
                    if (inStream != null)
                            inStream.close();
                    if (outStream != null)
                            outStream.close();
                    if (httpConn!= null)
                        httpConn.close();
                } catch (Exception ex) {
                System.out.println("HttpPoster socket close failed:"+ex.getMessage());
                }
        }
    }
  1.  鼓励答题 学分是什么
生活就是能生能活。