iteye_2178
2012-04-05 10:41
浏览 415
已采纳

webservice 身份认证问题

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • morgan117 2012-04-05 17:39
    已采纳

    你可以直接用HttpURLConnection来做客户端。
    [code="java"]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();
    [/code]
    通过这个outputStream来发请求
    像这样
    [code="java"]
    String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    + " soapenv:Body bin:sayHellomorgan23/bin:sayHello /soapenv:Body/soapenv:Envelope";
    os.write(s.getBytes());
    [/code]

    打赏 评论
  • morgan117 2012-04-05 11:06

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

    打赏 评论
  • morgan117 2012-04-05 12:15

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

    打赏 评论
  • morgan117 2012-04-05 13:39

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

    打赏 评论

相关推荐 更多相似问题