`
itwangxinli
  • 浏览: 146065 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

通信是可以了,但是现在是单向的呼叫,即AP呼叫ACS,那么ACS怎么呼叫AP呢?
  在TR-069协议3.2中规定了如何向AP发送连接请求,让AP创建连接。注意协议中规定是ACS向AP发送连接请求,AP鉴权通过后才会创建连接到ACS,所以ACS是不会连接到AP的,只是会发送连接请求,请求AP链接到ACS。
  下面是一种实现方式,使用了HTTPClient模拟发送GET请求到AP,其中AP的请求URL包含在Inform中了,也就是InternetGatewayDevice.ManagementServer.Connection
RequestURL对应的Value,用户名和密码就是上篇文章提到的 cwmp cep username XXX
password xxxx对应的value了。
具体不多说,先看协议再看代码了。

package com.seahigh;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthPolicy;
import org.apache.commons.httpclient.auth.AuthScope;p
import org.apache.commons.httpclient.methods.GetMethod;

/**
 * 
 * @author 汪心利
 * @Create Time 2009-1-6上午10:15:20
 * @CopyRight (C) seahigh 2009
 */
public class ConnectionRequest {
	public static void main(String[] arg) throws HttpException, IOException {
		callCPE("http://192.168.1.200:7547/cpe", "admin", "admin");

	}

	/**
	 * ACS CALL CPE
	 * 
	 * @param connectionRequestURL
	 *            访问CPE的URL 如:http://192.168.1.200:7547/cpe
	 * @param cepAccount
	 *            连接CPE用户名
	 * @param cpePWD
	 *            访问CPE的密码
	 */
	public static void callCPE(String connectionRequestURL, String cpeAccount,
			String cpePWD) {
		GetMethod get = new GetMethod(connectionRequestURL);
		int result = 0;
		try {
			HttpClient httpclient = new HttpClient();
			List authPrefs = new ArrayList(1);
			// Digest Auth
			authPrefs.add(AuthPolicy.DIGEST);
			httpclient.getParams().setParameter(
					AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
			// add CPE access param
			httpclient.getState().setCredentials(AuthScope.ANY,
					new UsernamePasswordCredentials(cpeAccount, cpePWD));
			result = httpclient.executeMethod(get);
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// relaseConnection
			get.releaseConnection();
		}
		System.out.println("Response status code: " + result);
		System.out.println("Response body: ");
	}
}


执行下程序,就可以看到AP向ACS发送Inform了,仔细查看inform的消息,就会发现
enent-code 6 Connection Request了,这就是说是ACS请求建立会话而创建的连接了.
结果如下:

<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"                                    
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                      
	       xmlns:cwmp="urn:dslforum-org:cwmp-1-0"                                      
	       xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"                                      
	       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">        
	 <soap:Header>           
		<cwmp:ID soap:mustUnderstand="1">2</cwmp:ID>        
	 </soap:Header>        
	 <soap:Body>                 
		<cwmp:Inform>            
			<DeviceId>                
				<Manufacturer>H3C</Manufacturer>               
				<OUI>000FE2</OUI>                
				<ProductClass>Gateway</ProductClass>                
				<SerialNumber>210235A32MC085003208</SerialNumber>            
			</DeviceId>            
			<Event soapenc:arrayType="cwmp:EventStruct[1]">                
				<EventStruct>                  
					<EventCode>6 CONNECTION REQUEST</EventCode>                  
						<CommandKey></CommandKey>                
					</EventStruct>           
			</Event>            
			<MaxEnvelopes>1</MaxEnvelopes>            
			<CurrentTime>2000-04-28T06:11:26</CurrentTime>            
			<RetryCount>0</RetryCount>            
			<ParameterList soapenc:arrayType="cwmp:ParameterValueStruct[8]">                
				<ParameterValueStruct>                   
					<Name>InternetGatewayDevice.DeviceSummary</Name>                    
        <Value soap:type="soap:string">
        InternetGatewayDevice:1.0[](Baseline:1)
        </Value>               
				</ParameterValueStruct>                
				<ParameterValueStruct>                    
					<Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>                    
	<Value soap:type="soap:string">1.0</Value>                
				</ParameterValueStruct>               
				<ParameterValueStruct>                    
					<Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>                    
          <Value soap:type="soap:string">Ver.A</Value>               
				</ParameterValueStruct>                
				<ParameterValueStruct>                    
					<Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>                    
         <Value soap:type="soap:string">V100R001B47D011SP01</Value>
				</ParameterValueStruct>                
				<ParameterValueStruct>                    
					<Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>                    
         <Value soap:type="soap:string">ProvisioningCode</Value>
				</ParameterValueStruct>               
				<ParameterValueStruct>                   
          <Name>
          InternetGatewayDevice.ManagementServer.ConnectionRequestURL
        </Name>                   
     <Value soap:type="soap:string"> 
      http://192.168.1.200:7547/cpe     
     </Value>               
				</ParameterValueStruct>                
				<ParameterValueStruct>                   
					<Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>                    
	<Value soap:type="soap:string"></Value>                
				</ParameterValueStruct>                
				<ParameterValueStruct>                   
          <Name>
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.ExternalIPAddress
       </Name>                   
<Value soap:type="soap:string">192.168.1.200</Value>                
				</ParameterValueStruct>            
			</ParameterList>          
		</cwmp:Inform>       
	</soap:Body>   
</soap:Envelope>

 

4
0
分享到:
评论
1 楼 无双Rama 2012-03-23  
我用HttpClient实现,怎么让AP主动连ACS呢?

相关推荐

    tr-069协议(中文)

    TR-069协议是一种通信协议,用于CPE(Customer Premises Equipment,用户终端设备)与自动配置服务器(ACS:Auto-Configuration Server)之间的通信。该协议主要应用于DSL(Digital Subscriber Line,数字用户线路)...

    Go-tr069-lib是一个用Go开发的tr069协议支持库

    1. **TR-069协议基础**:TR-069协议由两部分组成,即CPE(Customer Premises Equipment)侧的ACS(Auto-Configuration Server)和管理服务器侧的CWMP(CPE WAN Management Protocol)。这个协议允许远程服务器对CPE...

    TR-069简体中文版.doc

    TR-069 是一种用于 CPE(Customer Premises Equipment,用户设备)和自动配置服务器(ACS:Auto-Configuration Server)之间的通信协议,旨在实现安全的自动配置和其他 CPE 管理功能。该协议于 2004 年 5 月由 DSL ...

    TR-069简体中文版

    TR-069是一种用于CPE(Customer Premises Equipment)与自动配置服务器(ACS:Auto-Configuration Server)之间的通信协议,包括安全地自动配置及其它在公用框架下的CPE管理功能。本协议定义了CPE与ACS之间的交互...

    TR-111(属于TR069协议族)

    TR-069协议的核心是CWMP(CPE WAN Management Protocol),它定义了服务提供商的管理服务器(ACS,Auto-Configuration Server)与客户终端设备(CPE,Customer Premises Equipment)之间的通信协议。协议使用SOAP...

    TR-069 协议

    《TR-069协议详解:CPE与ACS之间的安全自动配置及管理功能》 一、TR-069协议概述 TR-069,全称Customer Premises Equipment WAN Management Protocol(客户驻地设备广域网管理协议),是DSL论坛(Digital ...

    网管协议SNMP和TR-069的分析

    TR-069协议的管理模型包括三个部分:CPE、ACS和参数树。CPE是客户端设备,ACS是自动配置服务器,参数树是管理信息库。 三、SNMP和TR-069的比较 SNMP和TR-069都是网络管理协议,但它们有所不同。SNMP是一种通用的...

    TR-069协议详细接收

    TR-069协议,全称为CPE WAN Management Protocol,是一种用于远程管理和自动配置客户边缘设备(Customer Premises Equipment, CPE)的通信协议。该协议由DSL论坛(DSL Forum)制定,旨在简化并标准化互联网服务提供...

    TR-069协议中英文版

    TR-069协议的主要组件是CPE(Customer Premises Equipment)和ACS(Auto Configuration Server),它们之间的交互构成了CWMP(CPE WAN Management Protocol)。 CPE通常是用户端设备,如宽带路由器、IPTV机顶盒、...

    TR-069.zip

    这些文档对于理解TR-069协议的实施、开发支持TR-069的设备或服务、以及进行兼容性测试都是至关重要的资源。中国电信的规范需求部分可能包含中国地区特定的要求和指导,这对于在中国市场部署TR-069相关产品和服务尤其...

    TR-069_Amendment-5.pdf

    TR-069是宽带论坛(Broadband Forum)发布的CPE WAN管理协议的第5次修订版,是一种用于宽带网络系统的开发和部署的指导性标准协议。TR-069协议最初发布于2004年,随后历经多次修订,以适应不断变化的技术需求和行业...

    TR-069 中英文版

    TR-069,全称为Technical Report 069,是由宽带论坛(Broadband Forum)制定的一套标准,主要用于远程管理家庭和企业网络设备,如路由器...学习和理解TR-069有助于在网络设备开发、运维或技术支持等领域提升专业能力。

    TR-069(中英文)+TR-135

    2. **CPE**: 家庭或企业中的网络设备,通常支持TR-069协议,能与ACS进行通信,接收配置指令并反馈状态信息。 TR-069协议基于SOAP(Simple Object Access Protocol)和HTTP/HTTPS,保证了安全性和可靠性。它还提供了...

    TR-069_Amendment-3.zip_TR-069_Amendment-3_tr_tr 069_tr-069

    TR-069 Amendment-3是该标准的第三个修订版,通常会包含对前一版本的改进和新增功能。 TR-069协议基于SOAP(Simple Object Access Protocol)和HTTP/HTTPS,利用这些开放的互联网协议,服务提供商可以从中央管理...

    TR-069技术文档

    TR-069协议全称为CPE WAN管理协议,是一种用于CPE(客户前置设备)与自动配置服务器(ACS)之间通信的技术标准。CPE通常指的是位于用户家里或办公室中的终端设备,如路由器、调制解调器等。而自动配置服务器(ACS)...

    ACS(TR069/ACS)模拟器/

    TR069(Technical Recommendation TR-069)是一种由DSL论坛(现为Broadband Forum)制定的管理协议,主要用于远程配置和管理家庭或小型办公室的CPE(Customer Premises Equipment),如调制解调器、路由器等设备。...

    TR-181协议英文版

    在实际应用中,服务提供商的ACS通过TR-069协议与CPE设备交互,使用TR-181定义的数据模型来获取设备状态、修改配置、推送软件更新等。这种远程管理能力大大简化了网络维护工作,减少了现场技术人员的干预需求。 总的...

    TR-069d 协议说明文档

    TR-069,全称为"CPE广域网管理协议",是由DSL论坛开发的一种技术规范,旨在解决大规模家庭网络设备的远程集中管理和配置问题。该协议为运营商提供了一个通用框架,使得他们能够从网络侧对诸如网关、路由器、机顶盒等...

Global site tag (gtag.js) - Google Analytics