1.获取ip地址

package demo.net;

import java.net.InetAddress;

import java.net.UnknownHostException;

/*

* 获取指定IP的主机名

*/

public class IPScanner {

// 传入IP地址,返回主机名称,若主机不可达则返回ip地址的字符串形式

public static String scanner(byte[] ip) {

InetAddress addr = null;

try {

addr = InetAddress.getByAddress(ip);

} catch (UnknownHostException e) {

e.printStackTrace();

}

return addr.getHostName();

}

public static void main(String[] args) {

String hostName;

String ip;

for (int i = 0; i <= 127; i++) {

ip = "59.68.255." + i;

hostName = scanner(new byte[] { 59, 68, (byte) 255, (byte)i });

if (!ip.equals(hostName))

System.out.println(ip +" : "+hostName);

}

}

}

2.获取html文本

package demo.net;

import java.io.IOException;

import java.net.URL;

import java.util.Scanner;

/*

* URL类用法示例,URL是统一资源定位符,可以打开到达一个资源的流,从而获取资源的内容

* 示例中获取武汉工业学院首页的内容,返回的内容是html文本

*/

public class URLDemo {

public static void main(String[] args) {

try {

URL url = new URL("http://www.whpu.edu.cn");

Scanner in = new Scanner(url.openStream());

while (in.hasNextLine())

System.out.println(in.nextLine());

} catch (IOException e) {

e.printStackTrace();

}

}

}

3.获取html文本

package demo.net;

import java.io.IOException;

import java.net.URL;

import java.net.URLConnection;

import java.util.Scanner;

/*

* URLConnection类是一个抽象类,定位到资源后可以读取资源内容且获得头信息

* 同时也可以用来提交表单数据,此示例展示获取资源及头信息

*/

public class URLConnectionDemo {

public static void main(String[] args) {

try {

// 1、通过在 URL 上调用 openConnection 方法创建连接对象。

URL url = new URL("http://www.whpu.edu.cn");

URLConnection connection = url.openConnection();

// 2、处理设置参数和一般请求属性。

connection.setDoInput(true);

connection.setDoOutput(true);

// 3、使用 connect 方法建立到远程对象的实际连接。

connection.connect();

// 4、远程对象变为可用。远程对象的头字段和内容变为可访问。

System.out.println(connection.getContentType());

System.out.println(connection.getContentEncoding());

System.out.println(connection.getContentLength());

System.out.println(connection.getDate());

// 读取内容

Scanner in = new Scanner(connection.getInputStream());

while (in.hasNextLine())

System.out.println(in.nextLine());

} catch (IOException e) {

e.printStackTrace();

}

}

}

4.总结

a:) HttpURLConnection的connect()函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数里面才正式发送出去。

b:) 在用POST方式发送URL请求时,URL请求参数的设定顺序是重中之重,对connection对象的一切配置(那一堆set函数)都必须要在connect()函数执行之前完成。而对outputStream的写操作,又必须要在inputStream的读操作之前。这些顺序实际上是由http请求的格式决定的。如果inputStream读操作在outputStream的写操作之前,会抛出异常:java.net.ProtocolException: Cannot write output after reading input.......

c:) http请求实际上由两部分组成,一个是http头,所有关于此次http请求的配置都在http头里面定义,一个是正文content。connect()函数会根据HttpURLConnection对象的配置值生成http头部信息,因此在调用connect函数之前,就必须把所有的配置准备好。

d:) 在http头后面紧跟着的是http请求的正文,正文的内容是通过outputStream流写入的,实际上outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络,而是存在于内存缓冲区中,待outputStream流关闭时,根据输入的内容生成http正文。至此,http请求的东西已经全部准备就绪。在getInputStream()函数调用的时候,就会把准备好的http请求正式发送到服务器了,然后返回一个输入流,用于读取服务器对于此次http请求的返回信息。由于http请求在getInputStream的时候已经发送出去了(包括http头和正文),因此在getInputStream()函数之后对connection对象进行设置(对http头的信息进行修改)或者写入outputStream(对正文进行修改)都是没有意义的了,执行这些操作会导致异常的发生。

更详细的URLConnection类解析内容请参考:http://www.blogjava.net/supercrsky/articles/247449.html

urlconnection用法(转)的更多相关文章

  1. URLConnection的连接、超时、关闭用法总结

    Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET与POST请求.二者的区别在于:      a:) get请求可以获取静态页面,也可以把 ...

  2. URLConnection格式与用法

    private void getdialog() { final EditText et = new EditText(this); final String workid = this.workid ...

  3. JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

    JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...

  4. 浅谈HTTP中GET、POST用法以及它们的区别

    浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...

  5. Java 中request.getInputStream()和BufferedReader 和 InputStreamReader 用法

    关于request.getInputStream(): http://www.cnblogs.com/steve-cnblogs/articles/5420198.html 浏览器 采用了一种编码方式 ...

  6. HttpURLConnection(http 1.1) 用法、状态码、状态描述

    最近研究了java的HttpURLConnection的用法, 这里简单的做一下记录: Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET ...

  7. [转]利用URLConnection来发送POST和GET请求

    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...

  8. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  9. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

随机推荐

  1. 随机List中数据的排列顺序

    把1000个数随机放到1000个位置. 这也就是一个简单的面试题.觉得比较有意思.就顺带写一下 举个简单的例子吧. 学校统一考试的时候  有 1000个人,然后正好有 1000个考试位置,需要随机排列 ...

  2. 移动端meta标签整理-备

    分类 在介绍移动端特有 meta 标签之前,先简单说一下 HTML meta 标签的一些知识. meta 标签包含了 HTTP 标题信息 (http-equiv) 和 页面描述信息 (name). h ...

  3. mvc action 参数绑定——值提供器【学习笔记】

    每次http请求的各种数据(表单数据.url的数据.路由数据等等)都保存在不同的IValueProvider接口的实现类中. 而IValueProvider接口的实现类是通过ValueProvider ...

  4. SAAS相关技术要点

    这篇文章本来是我们开发组内部用的一个小文档.因为我们公司以前没有做SAAS的经验,就成立了一个小组做一做这方面的技术前探,我是成员之一.这篇文档想从宏观的层面把开发一个SAAS应用所要用到的技术点稍微 ...

  5. Android假退出不是流氓行为

    转自Android假退出不是流氓行为 关于Android程序的退出,目前我们没有再用System.exit(0)或killProcess的机制而是直接用Activity.finish假退出了.因此在内 ...

  6. 向Python女神推荐这些年我追过的经典书籍

    http://blog.csdn.net/yueguanghaidao/article/details/10416867 最近"瑞丽模特学Python"的热点牵动了大江南北程序员的 ...

  7. Hosting Multiple Service Implementations On The Same Port With WCF

    Hosting Multiple Service Implementations On The Same Port With WCF Recently I have been playing arou ...

  8. 携手 Google 和 Docker 为 Microsoft Azure 带来全新的开源容器技术

     发布于 2014-08-08 作者 陈 忠岳 今天对容器管理来说是个好日子.因为今天微软开放技术不止发布一项,而是两项开源计划来帮助云开发者将容器管理又向前推进一步.我们已开始与 Google ...

  9. C++引用(Reference)

    引用(Reference)是C++语言相对于C语言的又一个扩充,类似于指针,只是在声明的时候用&取代了*.引用可以看做是被引用对象的一个别名,在声明引用时,必须同时对其进行初始化.引用的声明方 ...

  10. tyvj P1952 Easy(递推+期望)

    P1952 Easy 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下 ...