转:使用基本认证从WebServer获取数据

本文介绍了一种通过基本认证从WebServer获取数据的方法。利用ServletUtils类中的方法,设置HTTP请求头,实现身份验证,并通过不同的方法发送请求,接收响应数据。

转:使用基本认证从WebServer获取数据

[@more@]
  ServletUtils 
 
      BUFFSIZE = 4 * 1024; 
 
  
   ServletUtils()  
 
  
 
  
 
   HttpURLConnection getServerConnection( String server, String username,
                                            String password )
       Exception 
 
    HttpURLConnection urlConn = ;
 
    URL url =  URL(server);
 
    
    String userPassword =  username +  + password;
 
    
    String encoding =  sun.misc.BASE64Encoder().encode (userPassword.getBytes());
 
 
    
    urlConn = (HttpURLConnection) url.openConnection();
 
    
    urlConn.setDoOutput();
 
    
    urlConn.setDoInput();
 
    
    urlConn.setUseCaches();
    urlConn.setDefaultUseCaches();
 
 
    
    urlConn.setRequestProperty (,  + encoding);
 
     urlConn;
  
 
  
   Object sendRequest(HttpServletRequest req, String servletUrl,
                            String username, String password)
       CMSAccessException 
 
    
    Object responseObj = ;
 
    HttpURLConnection urlConn = ;
 
     
 
 
      String res = ;
 
System.out.println(   );
System.out.println(  + username );
System.out.println(  + password );
 
      urlConn = this.getServerConnection(servletUrl, username, password);
 
System.out.println(  + servletUrl );
System.out.println(   );
 
      String contenttype = req.getHeader(  );
 
      
       (contenttype != ) 
        urlConn.setRequestProperty(, contenttype);
        
 
        urlConn.setRequestProperty(, );
      
 
      
      BufferedOutputStream connOut =  BufferedOutputStream(urlConn.getOutputStream());
 
System.out.println(   );
      
      urlConn.connect();
 
      [] buffer =  [ BUFFSIZE ];
       len = 0;
 
System.out.println(   );
      
      ServletInputStream in = req.getInputStream();
 
System.out.println(   );
 
      
       ((len = in.read(buffer,0,buffer.length )) >-1) 
        connOut.write(buffer,0,len);
      
System.out.println(   );
 
      
      connOut.flush();
      connOut.close();
      in.close();
 
      
 
System.out.println(   );
      
      ObjectInputStream inputFromServlet =  ObjectInputStream(urlConn.getInputStream());
System.out.println(   );
      responseObj = inputFromServlet.readObject();
System.out.println(   );
 
      inputFromServlet.close();
 
      (Exception ex) 
 
        CMSAccessException (  +
                                     ex.toString() );
 
      
 
      
      ( urlConn !=  ) 
        urlConn.disconnect();
        urlConn = ;
      
 
    
 
    
     ( responseObj  CMSAccessException ) 
       (CMSAccessException)responseObj;
 
    
 
     responseObj;
 
  
 
  
   String  sendXDBServletRequest(HttpServletRequest req, String servletUrl,
                                 String username, String password)
       CMSAccessException 
 
    HttpURLConnection urlConn = ;
    StringBuffer      sb      =  StringBuffer();
     
 
      URL url =  URL(servletUrl);
 
      
      Authenticator.setDefault( AuthImpl(username,password));
 
      
      urlConn = (HttpURLConnection) url.openConnection();
 
      
      urlConn.setDoOutput();
 
      
      urlConn.setDoInput();
 
 
      
      BufferedOutputStream connOut =  BufferedOutputStream(urlConn.getOutputStream());
 
      urlConn.connect();
 
      [] buffer =  [ BUFFSIZE ];
       len = 0;
 
      
      ServletInputStream in = req.getInputStream();
 
      
       ((len = in.read(buffer,0,buffer.length )) >-1) 
        connOut.write(buffer,0,len);
      
 
      
      connOut.flush();
      connOut.close();
      in.close();
 
      
 
 
      
      InputStream content = (InputStream) url.getContent();
      BufferedReader servletin =  BufferedReader( InputStreamReader(content));
 
      String line = ;
 
      
       ((line = servletin.readLine()) != ) 
        sb.append(line);
        sb.append();
      
      servletin.close();
 
      (Exception ex) 
 
        CMSAccessException (  +
                                     ex.toString() );
      
 
      
      ( urlConn !=  ) 
        urlConn.disconnect();
        urlConn = ;
 
      
    
 
     sb.toString();
 
  
 
 
  
    sendXDBServletRequest(HttpServletResponse  res, String servletUrl,
                                 String username, String password)
        CMSAccessException   
 
    HttpURLConnection urlConn = ;
    BufferedInputStream in    = ;
 
    BufferedOutputStream bout = ;
 
     
 
      
      urlConn = this.getServerConnection(servletUrl, username, password);
 
      [] buffer =  [ BUFFSIZE ];
       len = 0;
 
      
      in =  BufferedInputStream( urlConn.getInputStream( ) );
 
      
      res.setContentType( urlConn.getContentType() );
 
      
      bout =  BufferedOutputStream( res.getOutputStream( ) );
 
      
      ( ( len = in.read(buffer,0,buffer.length) ) > -1 ) 
        bout.write(buffer, 0, len );
      
 
      (IOException ioEx) 
 
 
      System.out.println(  +
                         ioEx.toString( ) );
 
      (Exception ex) 
 
        CMSAccessException (  +
                                     ex.toString() );
      
 
       
        ( in !=  ) in.close();
        ( bout !=  ) bout.close();
       (IOException ioEx)  
        System.out.println( + ioEx.toString());
      
      
      ( urlConn !=  ) 
        urlConn.disconnect();
        urlConn = ;
      
    
 
  
 
  
 
  
   AuthImpl  Authenticator 
 
     String user=;
     String pwd = ;
 
    
     AuthImpl(String user,String pass) 
      this.user = user;
      this.pwd = pass;
    
 
    
     PasswordAuthentication getPasswordAuthentication() 
        PasswordAuthentication(user, pwd.toCharArray());
    
  
 
 

 Trackback:
http://anotherbug.blog.chinajavaworld.com/entry/4060/15

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/220284/viewspace-1010912/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/220284/viewspace-1010912/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值