java从url里获取二进制数据

package zhucepeiyu15;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;

public class UrlResource {

public static void main(String[] args){
try {
//System.out.println(UrlResource.getUrlDetail("http://www.baidu.com",true));
//saveUrlFile("http://www.baidu.com/img/baidu_jgylogo3.gif", "D:\\1.gif");
System.out.println(Base64.encode(getUrlFileData("http://wx.qlogo.cn/mmhead/ver_1/kC3AQCrfiadW43ZnRzIGNMq76pibZvdXuiasPibe8kwtl3dNf2c6UKoZtDSOf7ibFmWbFhJic9cZJf2a7Via5k1uYfGzr8Yt6rQU8kxbK15ZQ9WctE/0")));
} catch (Exception e) {
e.printStackTrace();
}
}

//获取网络文件,转存到fileDes中,fileDes需要带文件后缀名
public static void saveUrlFile(String fileUrl,String fileDes) throws Exception
{
File toFile = new File(fileDes);
if (toFile.exists())
{
// throw new Exception("file exist");
return;
}
toFile.createNewFile();
FileOutputStream outImgStream = new FileOutputStream(toFile);
System.out.println(getUrlFileData(fileUrl));
outImgStream.write(getUrlFileData(fileUrl));
outImgStream.close();
}
public static String getBase64UrlFileData(String fileUrl)
{
try {
return Base64.encode(getUrlFileData(new String(Base64.decode(fileUrl))));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//获取链接地址文件的byte数据
public static byte[] getUrlFileData(String fileUrl) throws Exception
{
URL url = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = cin.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
cin.close();
byte[] fileData = outStream.toByteArray();
outStream.close();
return fileData;
}

//获取链接地址的字符数据,wichSep是否换行标记
public static String getUrlDetail(String urlStr,boolean withSep) throws Exception
{
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(cin,"UTF-8"));
StringBuffer sb = new StringBuffer();
String rl = null;
while((rl = reader.readLine()) != null)
{
if (withSep)
{
sb.append(rl).append(System.getProperty("line.separator"));
}
else
{
sb.append(rl);
}
}
return sb.toString();
}

}

时间: 2024-10-30 18:25:44

java从url里获取二进制数据的相关文章

java通过url抓取网页数据-----正则表达式

原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里只是举个例子.话不多说了,上看看效果吧. [效果] 我们随便找个天气预报的网站来试试:http://www.weather.com.cn/html/weather/101280101.shtml

java通过url抓取网页数据

在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据进行数据提取和数据分类汇总. 很多人在第一次了解数据采集的时候,可能无从下手,尤其是作为一个新手,更是感觉很是茫然,所以,在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成

java跨平台、对话框、二进制数据打印

java跨平台 public class JavaTest{ public static void main(String[] args){ System.out.println("java Test for windows/linux"); } } windows,linux平台下面, 使用javac JavaTest.java; java JavaTest命令进行测试,顺利通过. 编译中间产生的JavaTest.class 可以放到不同的jvm虚拟机中进行解释执行. 对话框 Swi

Java模拟POST请求发送二进制数据

在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { String result = ""; try { String url = "http://localhost:8080/Demo/SiteApi"; URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection co

java提取url里的域名

使用java标准类库java.net.URL java.net.URL url = new java.net.URL("http://blog.csdn.net/xxx.png"); String host = url.getHost();// 获取主机名 System.out.println("host:"+host);// 结果 blog.csdn.net 原文地址:https://www.cnblogs.com/UniqueColor/p/9100767.ht

创建一个Java Web项目,获取POST数据并显示

新建一个新的Java Web工程项目 打开IntelliJ IDEA 新建一个工程,选择选择Java Enterprise,设置Tomcat的安装目录,点击下一步. 选中Create project from template,点击下一步: 创建工程成功,可以看到目录结构是如下图一样的: 第一个程序,HelloWorld程序 JSP代码要使用<%%>包起来,因此HelloWorld输出到网页上是这么写的: 变量的使用 Java Web中的变量是这么声明和使用的. 构建一个登录页面 接受表单参数

JavaScript如何获取二进制数据响应

AJAX的dataType类型是没有blob或者arraybuffer的,那如果我们访问一个API返回的是个图片或者文件之类的二进制内容,该怎么办呢? 有人开了个bug,并引发了一个长长的讨论,不过最终这个bug解成了CANTFIX,也就是说决定是AJAX不会去支持,但引发讨论的那哥们最终写了个插件. 经过各种查询,总结下来有三种办法: 用那个插件 用XMLHttpRequest 用AJAX TRANSPORT 我最终选择了用XMLHttpRequest,因为其他两个会带来太多额外的代码.

如何在DJANGO里获取?带数据的东东,基于CBV

用DEF的,有现成的,而用CLASS的,就要作一下变通. 如下: if self.request.GET: if self.request.GET.get('search_pk'): search_pk = self.request.GET.get('search_pk') return DeployVersion.objects.filter(Q(name__icontains=search_pk) | Q(jenkins_number__icontains=search_pk) | Q(co

Android -- 获取接口数据的三个方法

1.   compile 'com.loopj.android:android-async-http:1.4.9': AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.addHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8"); params