走了好多彎路才調通, 現在分享一下, 希望能對在這方面感到困惑的朋友有一點幫助.
我采用的框架是axis2.
//options用來包容客戶端的各種設置
Options options = new Options();
//設置地址
options.setTo(
new EndpointReference(address));
//設置服務端認證. , 開始的時候沒有設host和domain, 認證通不過, 生成的http header 中也沒有認證信息. 搞了好半天才發現必須設置主機和域名(服務器端的)
HttpTransportProperties.Authenticator auth=new HttpTransportProperties.Authenticator();
auth.setUsername("Administrator");
auth.setPassword("2222");
auth.setHost("test.xxx.com");
auth.setDomain("test.xxxx.com");
options.setProperty(HTTPConstants.AUTHENTICATE, auth);
options.setAction("Execute");
//必須設置http version為1.0, 這樣客戶端的代理屬性才起作用.
options.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION,
HTTPConstants.HEADER_PROTOCOL_10);
//proxy settings
ProxyProperties proxyProperties=new ProxyProperties();
proxyProperties.setProxyName("PROXYSERVER");
proxyProperties.setProxyPort(8080);
proxyProperties.setUserName("luyanbo");
proxyProperties.setPassWord("sand");
proxyProperties.setDomain("sand.cn");
options.setProperty(HTTPConstants.PROXY, proxyProperties);
ServiceClient servicClient = new ServiceClient();
servicClient.setOptions(options);
//發送并接收
OMElement result = servicClient.sendReceive(getAuthXml());
用的過程中, 發現axis2的文檔實在太粗略了, 很多不該省略的地方也省了, 像代理屬性設置里面, http版本的設置就沒有提到. 可能他們也是發揚風格. 怎么省事怎么來的吧