通过 URL类获取带密码验证资源文件的处理方法

简介:

 

package com.test;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

public class Test{

 /**
  * @param args
  */
 public static void main(String[] args) {

  String imageurl="http://www.baidu.com/img/logo-yy.gif";
  URL url;
  
  String theUsername="test";
  String thePassword="test";
  
  try {
   url = new URL (imageurl);
   
   String userPassword = theUsername + ":" + thePassword;
   String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
   
   //实际上URL的openConnection的返回值就是一个URLConnection
      URLConnection c;
   try {
    c = url.openConnection();
    c.setRequestProperty ("Authorization", "Basic " + encoding);
    
       //用URLConnection的connect()方法建立连接
       c.connect();                            //*
       // 显示该连接的相关信息,这些都是URLConnection的方法
       System.out.println("内容类型: "+c.getContentType());
       System.out.println("内容长度: "+c.getContentLength());
       System.out.println("创建日期: "+new Date(c.getDate()));
       System.out.println("最后修改日期: "+new Date(c.getLastModified()));
       System.out.println("终止日期: "+new Date(c.getExpiration()));
      
       InputStream in=c.getInputStream();
      
    String pathName = saveTempFile(in,"test.jpg");
    System.out.println(pathName);
    
    
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } //*
  
   
   
   
   
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 

  

 }
 
 private static String saveTempFile(InputStream inputStream,String fllename) {
  String pathName = getTempFileName(fllename);  
  File tmpFile = new File(pathName);
  OutputStream out = null;
  try {
   out = new BufferedOutputStream(new FileOutputStream(tmpFile));

   int length = 1024 * 1024;

   byte[] buffer = new byte[length];

   while ((length = inputStream.read(buffer)) > 0) {
    out.write(buffer, 0, length);
   }
  } catch (Exception e) {
   e.printStackTrace();
   //Global.logger.error("save temp file exception!");
  } finally {
   ResourceMgr.closeQuietly(out);
  }
  return pathName;
 }
 
 private static String getTempFileName(String filename) {
  //return System.getProperty("user.dir")+ File.separator+System.currentTimeMillis() + ".gif";
  return System.getProperty("user.dir")+ File.separator + filename;
 }

}

 

 

 

 

注意 关键:

 

   String userPassword = theUsername + ":" + thePassword;
   String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());

 

    c.setRequestProperty ("Authorization", "Basic " + encoding);

目录
相关文章
|
1月前
|
存储 网络协议 前端开发
在 Java 中如何完全验证 URL
在 Java 中如何完全验证 URL
84 8
|
JavaScript 算法 Java
企业微信开启接收消息+验证URL有效性
企业微信开启接收消息、验证URL有效性、SHA1、提供接收和推送给企业微信消息的加解密接口、计算消息签名接口
233 1
企业微信开启接收消息+验证URL有效性
|
JSON 前端开发 安全
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
285 0
|
JSON 安全 关系型数据库
php传递url参数加密验证的解决方案(加密解密、安全验证过滤)
php传递url参数加密验证的解决方案(加密解密、安全验证过滤)
428 0
|
JSON 数据格式 Python
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
|
JavaScript
js 验证url是否正确
js 验证url是否正确
90 0
|
小程序 安全 API
.NET企业微信回调配置(数据回调URL和指令回调URL验证)(一)
.NET企业微信回调配置(数据回调URL和指令回调URL验证)
961 0
.NET企业微信回调配置(数据回调URL和指令回调URL验证)(一)
|
算法 安全 编译器
第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析
第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析
178 0
|
Java
Java 技术篇 - ServerSocket接收http的url请求中包含中文的处理方法,URLDecode与URLEncode,url解码与编码
Java 技术篇 - ServerSocket接收http的url请求中包含中文的处理方法,URLDecode与URLEncode,url解码与编码
270 0
Java 技术篇 - ServerSocket接收http的url请求中包含中文的处理方法,URLDecode与URLEncode,url解码与编码