0 0

webservice 身份认证问题5

现在只知道webservice 的url ,在浏览器上输入url,需要用户名,密码才能打开xml
用java做客户端,怎么才能实现身份认证呢?望大侠们指教下

另外服务端是.net做的,我用xfire,axis都试了,没解决

问题补充:
morgan117 写道
你的客户端是wsdl生成的,还是自己用HttpURLConnection做的?


用axis生成的

问题补充:
morgan117 写道
你可以通过调用生成的service的createDispatch方法,得到dispatch。
再调用dispatch的方法就行了。
dispatch.getRequestContext().put(Dispatch.USERNAME_PROPERTY, "role1");
dispatch.getRequestContext().put(Dispatch.PASSWORD_PROPERTY, "tomcat");

没有createDispatch的方法,我是从xml文件生成的,直接从url生成会报错,生成不了

问题补充:
morgan117 写道
你把客户端代码贴出来看看。没用过axis生成客户端过

public static void main(String[] args) throws Exception, ServiceException {
        URL url = new URL("http://localhost/Incuity/ContentService.asmx");
        ContentServiceSoapStub sisbs = new ContentServiceSoapStub(url, 
            new ContentServiceLocator()); 
        
        sisbs.setUsername("ssss");
        sisbs.setPassword("ssss");

  				   sisbs.exportContentPackage(new String[] { "", "" },
  			
}


报http://xml.apache.org/axis/}HttpErrorCode:401
2012年4月05日 10:41

4个答案 按时间排序 按投票排序

0 0

采纳的答案

你可以直接用HttpURLConnection来做客户端。

URL url = new URL("http://localhost/Incuity/ContentService.asmx");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "text/xml");\\根据具体情况定
conn.setDoOutput(true);
String passId = new String(Base64.encode("username:password".getBytes()));
conn.setRequestProperty("Authorization", "Basic "+passId);
conn.connect();
OutputStream os = conn.getOutputStream();

通过这个outputStream来发请求
像这样
String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:bin=\"http://hello1/\">"
				+ " <soapenv:Body> <bin:sayHello><arg0>morgan</arg0><arg1>23</arg1></bin:sayHello> </soapenv:Body></soapenv:Envelope>";
os.write(s.getBytes());

2012年4月05日 17:39
0 0

你把客户端代码贴出来看看。没用过axis生成客户端过

2012年4月05日 13:39
0 0

你可以通过调用生成的service的createDispatch方法,得到dispatch。
再调用dispatch的方法就行了。
dispatch.getRequestContext().put(Dispatch.USERNAME_PROPERTY, "role1");
dispatch.getRequestContext().put(Dispatch.PASSWORD_PROPERTY, "tomcat");

2012年4月05日 12:15
0 0

你的客户端是wsdl生成的,还是自己用HttpURLConnection做的?

2012年4月05日 11:06

相关推荐

Global site tag (gtag.js) - Google Analytics