回到考试中心首页|兰州学生网LOGO
首页  |  外语考试  |  IT认证  |  基础教育  |  甘肃省专升本  |  学历考试  |  硕士学历  |  公务员  |  会计考试  |  职业资格  |  医学医药  |  建筑工程
会员登录
热门文章
·二级建造师模拟试题一套
·公务员面试自我介绍范文
·践行社会主义荣辱观 党课讲稿
·八荣八耻,从我做起!
·临床执业医师考试真题完全版(一)
·学习八荣八耻心得体会(完善版)
·八荣八耻演讲稿
·八荣八耻歌(歌词)
·英文自我介绍
·中学:教师资格认证考试全真模拟试卷和答案
·八荣八耻中学生演讲稿
·小学教师资格考试教育学仿真试题之一
·八荣八耻手抄报内容
·《八荣八耻歌》歌词 伴奏及曲牌
·暑期实践报告
广告推荐
Java网络编程之URI、URL研究专题八
作者: 来源: 责任编辑: 更新日期:2006-3-27 19:43:56 浏览:
Java网络编程之URI、URL研究专题八

  列表6是URLDemo3的源代码,它演示了把窗体数据发送给某个"了解"application/x-www-form-urlencoded内容类型的资源。它实现了前面提到的各种事务。

列表6: URLDemo3.java

// URLDemo3.java

import java.io.*;

import java.net.*;

class URLDemo3

{

ublic static void main (String [] args) throws IOException

{

// 检查最后两个参数和参数的数量

if (args.length < 2 || args.length % 2 != 0)

{

System.err.println ("usage: java URLDemo3 name value " +

"[name value ...]");

return;

}

// 建立程序连接服务器程序资源的URL对象,它返回一个窗体的名称/值对

URL url;

url = new URL

("http://banshee.cs.uow.edu.au:2000/~nabg/echo.cgi");

// 向某个特定协议对象返回表现http资源连接的引用

URLConnection uc = url.openConnection ();

// 验证连接的类型,必须是HttpURLConnection的

if (!(uc instanceof HttpURLConnection))

{

System.err.println ("Wrong connection type");

return;

}

// 表明程序必须把名称/值对输出到服务器程序资源

uc.setDoOutput (true);

// 表明只能返回有用的信息

uc.setUseCaches (false);

//设置Content-Type头部指示指定URL已编码数据的窗体MIME类型

uc.setRequestProperty ("Content-Type",

"application/x-www-form-urlencoded");

// 建立名称/值对内容发送给服务器

String content = buildContent (args);

//设置Content-Type头部指示指定URL已编码数据的窗体MIME类型

uc.setRequestProperty ("Content-Length",

"" + content.length ());

// 提取连接的适当的类型

HttpURLConnection hc = (HttpURLConnection) uc;

// 把HTTP请求方法设置为POST(默认的是GET)

hc.setRequestMethod ("POST");

// 输出内容

OutputStream os = uc.getOutputStream ();

DataOutputStream dos = new DataOutputStream (os);

dos.writeBytes (content);

dos.flush ();

dos.close ();

// 从服务器程序资源输入和显示内容

InputStream is = uc.getInputStream ();

int ch;

while ((ch = is.read ()) != -1)

System.out.print ((char) ch);

is.close ();

}

tatic String buildContent (String [] args)

{

StringBuffer sb = new StringBuffer ();

for (int i = 0; i < args.length; i++)

{

// 为正确的传输对参数编码

String encodedItem = URLEncoder.encode (args [i]);

.append (encodedItem);

if (i % 2 == 0)

.append ("="); // 分离名称和值

else

.append ("&"); // 分离名称/值对

}

// 删除最后的 & 间隔符

.setLength (sb.length () - 1);

return sb.toString ();

}

}
你可以会奇怪为什么URLDemo3没有调用URLConnection的connect()的方法。这个方法没有被明显的调用,因为如果连向资源的连接没有建立的话,其它的URLConnection方法(例如getContentLength())会明确的调用connect()方法。但是一旦连建立了接,调用这些方法(例如setDoOutput(boolean doOutput))就是违反规定的。

在connect()被(明确地或隐含地)调用后,这些方法会产生一个IllegalStateException对象。

在URLDemo3编译后,在命令行输入java URLDemo3 name1 value1 name2 value2 name3 value3,你可以看到下面的输出:

<html> <head>

<title>Echoing your name value pairs</title>

</head>

<body>

<ol>

<li>name1 : value1

<li>name2 : value2

<li>name3 : value3

</ol>

<hr>

Mon Feb 18 08:58:45 2002

</body>

</html>

该服务器程序资源的输出由HTML组成,这些HTML回应的是name1、value1、name2、 value2、name3和value3。

技巧

如果你需要URL对象的URL的字符串表现形式,请调用toExternalForm()或toString()。两种方法的功能是相同的。

总结

本文研究了Java的网络API,聚焦于URI、URL和URN。你学习了这些概念,以及怎样使用URI和URL(URL相关)的类工作,同时你学习了MIME的知识以及它与URL的关系。现在你应该编写一些代码熟悉一下所学的内容了。

打印本文 收藏本文 返回顶部 关闭窗口
   考试中心分类导航
      外语考试 | 英语四六级 | 专四专八 | 职称英语 | 口译笔译 | 商务英语 | 实用英语 | 托福 | 雅思 | GRE | LSAT | PETS | GMAT
      IT认证 | 计算机等级 | 软件程序员 | 微软认证 | 思科认证 | Oracle | Linux | JAVA
      甘肃省专升本 | 专升本动态 | 招生计划 | 考试大纲 | 专升本试题    基础教育 | 中考 | 高考    学历考试 | 成人高考 | 自学考试
      硕士学历 | 考研 | MBA/EMBA | 在职硕士 | 法律硕士 | 会计硕士 | 工程硕士    公务员 | 考试动态 | 考试指导 | 考试真题 | 模拟题 | 技巧心得
      医学医药 | 执业护士 | 执业医师 | 执业药师    会计考试 | 资产评估 | 经济师 | 从业资格 | 会计职称 | 注会 | 注税 | 高级会计 | ACCA/CAT | 精算师
      职业资格 | 保险考试 | 报关员 | 外销员 | 物流师 | 报检员 | 司法考试 | 律师考试 | 商务师 | 人力资源 | 电子商务 | 导游资格 | 证券考试 | 教师资格
      建筑工程 | 岩土师 | 室内设计师 | 质量资格 | 房产估价 | 土地估价 | 建造师 | 造价师 | 建筑师 | 结构师 | 监理师 | 咨询师 | 城市规划 | 安全工程师
设为首页   |    收藏本站   |    网站帮助   |    网站地图   |    意见反馈   |    关于我们   |    广告服务   |    联系办法
陇ICP备05005179 不良信息举报