您的位置:首页 > 理论基础 > 计算机网络

Java基础--网络编程1

2016-11-07 18:26 363 查看
Java基础--网络编程1

package test.net;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class InetAddressTest {

/**
* 去掉url中的路径,留下请求参数部分
* url地址
* @return url请求参数部分
*/
private static String TruncateUrlPage(String strURL) {
String strAllParam = null;
String[] arrSplit = null;

strURL = strURL.trim().toLowerCase();

arrSplit = strURL.split("[?]");
if (strURL.length() > 1) {
if (arrSplit.length > 1) {
if (arrSplit[1] != null) {
strAllParam = arrSplit[1];
}
}
}

return strAllParam;
}

/**
* 解析出url参数中的键值对 如 "index.jsp?Action=del&id=123",解析出Action:del,id:123存入map中
* url地址
* @return url请求参数部分
*/
public static Map<String, String> URLRequest(String URL) {
Map<String, String> mapRequest = new HashMap<String, String>();

String[] arrSplit = null;

String strUrlParam = TruncateUrlPage(URL);
if (strUrlParam == null) {
return mapRequest;
}
// 每个键值为一组 www.2cto.com
arrSplit = strUrlParam.split("[&]");
for (String strSplit : arrSplit) {
String[] arrSplitEqual = null;
arrSplitEqual = strSplit.split("[=]");

// 解析出键值
if (arrSplitEqual.length > 1) {
// 正确解析
mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);

} else {
if (arrSplitEqual[0] != "") {
// 只有参数没有值,不加入
mapRequest.put(arrSplitEqual[0], "");
}
}
}
return mapRequest;
}

public static void main(String[] args) {

String link = "https://alimarket.taobao.com/markets/alimama/amp?wh_cat=nvxie&wh_shop=%E6%B1%9F%E5%8D%97%E5%85%88%E7%94%9F%E6%97%97%E8%88%B0%E5%BA%97&qq-pf-to=pcqq.c2c&ali_trackid=17_c133ff6ee06f0efc1ed767fa37c462cf&spm=a21bo.50862.201862-3.1.LJf6WQ";
try {
URL url = new URL(link);
// System.out.println(url.getFile());
// System.out.println("获取URL的主机名:"+url.getHost());
// System.out.println("获取URL的路径部分:"+url.getPath());
// System.out.println("获取URL的端口号:"+url.getPort());//-1代表的默认端口:80
// System.out.println("获取URL的协议名称:"+url.getProtocol());
System.out.println("获取URL的查询字符串部分:" + url.getQuery());

Map<String, String> parmas = URLRequest(link);
System.out.println(parmas.get("wh_cat"));
System.out.println(URLDecoder.decode(parmas.get("wh_shop"), "UTF-8"));

System.out.println("================获取网页的源代码=======================");
//打开网络服务的连接对象
URL url1 = new URL("https://2.taobao.com/?spm=2007.1000337.0.0.Y97YgW");
URLConnection conn = url1.openConnection();
// System.out.println("getContent===="+conn.getContent());
// System.out.println("getContentEncoding===="+conn.getContentEncoding());
// System.out.println("getContentLength===="+conn.getContentLength());//网络文件的总大小
// System.out.println("getExpiration===="+conn.getExpiration());
// System.out.println("getLastModified===="+conn.getLastModified());
try {
//获取连接的字节输入流
InputStream inputStream = conn.getInputStream();
//网络图片、视频---字节流(8--1byte)
//网络源代码---字符流(16--1byte)
//将字节流转换成字符流--网页的源代码
InputStreamReader isr = new InputStreamReader(inputStream,"GBK");
BufferedReader reader = new BufferedReader(isr);

String content = null;
while ((content=reader.readLine())!=null) {
// System.out.println(content);
}
} catch (Exception e) {
// TODO: handle exception
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("================下载网络文件======================");
try {
URL url2 = new URL("http://img.blog.csdn.net/20161030170411316?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center");
HttpURLConnection connection = (HttpURLConnection) url2.openConnection();

File file = new File("D:/Eclipse/test");
if (!file.exists()) {
file.mkdirs();
}
File filename = new File(file,UUID.randomUUID().toString()+".jpg");

try {
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(filename);
byte[] b = new byte[2048];
int len = 0;
while((len=inputStream.read(b))!=-1){
outputStream.write(b, 0, len);
}
} catch (Exception e) {
// TODO: handle exception
}

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java