URL 授权访问另外一种方法,利用 Java 1.1 访问密码保护的 URL

简介:
+关注继续查看

http://blog.csdn.net/jserkang/archive/2005/03/13/318623.aspx

 

接入9588短信网关(http协议),9588的iis上的短信服务url需要身份验证,

在程序中使用的URL:http://UserName:Password@000.000.000.000/SmbpHttpAgent/

接入java代码:

URL url = new URL(buf.toString()); System.out.println("****"+buf.toString() );
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
String password = "user:password;
BASE64Encoder base = new BASE64Encoder();
String encodedPassword = base.encode(password.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(in.readLine()!=null){ out.println(in.readLine()); bool = true; }

接入asp代码

function SendMessage(mobile,strMessage)
 Dim str,url,postmsg
 url="http://000.000.000.00/SmbpHttpAgent/Sxxxxxxx
 
 Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")

'设置参数及其值
strRequest = url1
objHTTP.Open "POST", postmsg, False,"接入帐号","接入密码"
'设置这个Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(strRequest)
bOK = xmlDOC.load(objHTTP.responseXML)
'看看状态值
if objHTTP.Status=200 then
xmlStr = xmlDOC.xml
Response.Write xmlStr
else
Response.Write objHTTP.Status&"<br>"
Response.Write objHTTP.StatusText
end if
end function

John Zukowski

 

摘要
在上一篇的tip, Java Tip 46, 描述了如何利用Java 程序访问密码保护的 URL,通过 Java 1.2 的新的 Authenticator 类。如果你或者你的用户转到 Java 1.1 下该怎么办呢?基本上,没有 Java 1.2,你会失掉 Authenticator带来的好处。但别失望! 这篇文章将展示 Java 1.1 小程序片和应用程序如 何访问需要输入用户名称和密码的R访问需要输入用户名称和密码的 URLs.(1250字)

非常感谢 David Wallace Croft,他跟踪并修复了 Base64Converter 类的原始版本的一个 bug, ?经过修改的类的源代码在这篇短文中列出。
在上一篇技巧中,我们引入了如下的场景:你使用喜欢的浏览器在网上冲浪,并遇到了一个URL 需要代理或HTTP服务器的授权。在屏幕上出现的是一个标准的对话框,必须在其中输入你的用户名称和密码来访问这个站点。为了更清楚起见,屏幕上的对话框如下图所示。

 

在 Java 程序中,你将发现一个问题:当你试图从 InputStream 中读取和URL相关的信息时,一个 FileNotFoundException将会抛出。


从 Java 1.2开始,可以利用 Authenticator 类,如上面所提到的,在 Java Tip 46 你已经学到。然而,在比Java 1.2 早的版本
中,在试图从 URL 中读取数据之前首先需要知道所访问的 URL 是否是受密码保护的。如果 URL 是密码保护的,必须手动的确认每
个URL 的密码保护响应,然后才能访问所需要的内容。密码保护响应以授权要求属性的形式出现。这种属性通过 URLConnection 和?br /> URL相关联。一旦授权要求被满足,当到达某个 URL 时,上面的信息是可以被访问的。


授权字符有着如下的形式“Authorization: Basic 用户名:密码,”其中,基本授权字段以Base64格式编码。(编码格式的描述可以
可以在 RFC 1113 中得到。一个RFC是一个“requst for comment”文档,基本上描述某些Internet 标准,在本例中,#1113 描述
了消息加密和授权程序,参见下面的 资源 ),为了编码,可以使用 sun.misc package 中的 BASE64Encoder 类,或者创建自己的类。
?

为了建立这个访问,只需简单的确认 URL's URLConnection 是否有“授权”要求属性。下面的步骤描述了怎样进行。


步骤1:创建 URL

URL url = new URL (urlString);


步骤2:为specificURL 获得用户名称和密码


步骤3:将它们放入String并用冒号":"分开


String userPassword = theUsername + ":" + thePassword;


步骤4:对字符串进行编码

String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());


步骤5: 通过 URL 创建 URLConnection

URLConnection uc = url.openConnection();


步骤6:为URLConnection 设置“授权”要求属性

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

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jserkang/archive/2005/03/13/318623.aspx

 

目录
相关文章
|
11月前
|
Java
Java-用简单方法创建透明窗口
Java-用简单方法创建透明窗口
250 0
|
11月前
|
Java C++
Java String 的 常量池 和 intern 方法 简析
Java String 的 常量池 和 intern 方法 简析字符串常量池和 intern 方法 先举个例子,我们创建 10000 个相同的 String,并且不使用常量池 String[] list = new String[10000]; for (int i = 0; i < 10000; i++) { list[i] = new String(new char[]{'a','b','c'}); } 结果是:每个 String 都用新开的对象,占用大量内存 现在我们这样创建,增加一个 map ,key 和 value 内容一样,每次取的时候,先检查一下 map 里面有没
|
11月前
|
Java 开发者
对Java程序main方法的一些思考
本文浅谈对Java程序main方法的一些思考
86 0
|
11月前
|
存储 Java 索引
Java形参个数可变的方法
本文介绍Java支持的形参个数可变的方法。
79 0
Java的学习笔记(04)方法
Java方法01 方法是语句的集合,执行一个功能。方法再程序中被创建,再其他地方被引用 一个方法只做一个功能 方法的命名规则:首字母小写,驼峰规则。 package method; public class Demo01 { //mian 方法 public static void main(String[] args) { int sum = add(1,2); //调用一个方法:加法 // 实际参数:实际调用传递给
|
11月前
|
算法 Java
【Java编程进阶】方法初识
方法是组合在一起来执行操作语句的集合`,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。
87 1
【Java编程进阶】方法初识
|
11月前
|
算法 Java
算法java快速排序的两种方法(单边循环、双边循环)
算法java快速排序的两种方法(单边循环、双边循环)
98 0
|
11月前
|
Java 索引
java二分查找方法的实现和其优化(解决整数溢出)
java二分查找方法的实现和其优化(解决整数溢出)
121 0
|
11月前
|
Java
Java练习题——抽象类、方法以及接口
由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可
181 0
Java练习题——抽象类、方法以及接口
|
11月前
|
Java
Java练习题——方法(基础版)
求数组内最大值以及定义一个随机数组在之前已经介绍过了,只需要将这部分的代码打包放在一个方法内,并在main方法中调用即可
309 0
相关产品
云迁移中心
推荐文章
更多