如果你是basic authentication,当然应该放到 HTTP的头信息里去。
不同的客户端工具有各自具体的放法。

解决方案 »

  1.   

    我用asp调用web service,soap request 写成如下,参考了
    http://quimby.gnus.org/internet-drafts/draft-cunnings-salz-soap-auth-01.txt
    写成如下:
    <SOAP-ENV:Envelope
               SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
               xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SOAP-ENV:Header>
               <h:BasicAuth
                   xmlns:h="http://soap-authentication.org/2002/01/"
                   SOAP-ENV:mustUnderstand="1">
               <Name>admin</Name>
               <Password>broccoli</Password>
               </h:BasicAuth>
           </SOAP-ENV:Header>
           <SOAP-ENV:Body>
               <m:echoString xmlns:m="http://soapinterop.org/">
                   <inputString>This is a test.</inputString>
               </m:echoString>
           </SOAP-ENV:Body>
       </SOAP-ENV:Envelope>
    response 不成功
    请教大侠,应该怎样写呢?
      

  2.   

    你可能还没弄清楚,basic auth是指HTTP层的验证,它是HTTP1.1协议的一部分,在Web Service 出现之前就有了的,它是HTTP的头信息的一部分。(参阅RFC2068) 
    例如作为客户端,微软的浏览器IE就内置了这样功能,你浏览有的网站,
    它会跳出一个叫你输用户名密码的对话框。否则返回HTTP401错误。你如果放到SOAP Header里,那就不叫basic auth了,当然这样也是可以选择的一种方案,但是如果这样服务端也要做相应更改,改为从SOAP信息里取。但如果你们的验证协议已经定好了采用basic auth, 那你这样写是错误的。 具体的写法你的SDK工具里肯定已经有了,你可以查一下。不需要你手工用文本方式硬写。
      

  3.   

    具体怎么写你应该在.NET板块去问,我知道.NET好像有个Header Object的,大概就是
    oHeader.Add(FieldName, FieldValue)之类的搞法了。
      

  4.   

    谢谢大侠帮我搞清了基本概念。
    我采用http basic auth
    部分代码如下:
    url="http://www.abc.com";
    SoapRequest="..........";Set xmlDOC =server.CreateObject("MSXML.DOMDocument")
    xmlDOC.loadXML(SoapRequest)Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
    xmlhttp.Open "POST",url,false,userName,password成功运行,谢谢。
    不过当我采用https时无法成功,再次请问大侠。
      

  5.   

    https需要服务端和客户端都配置好。首先你要确认服务端确实已经配置好了。比如可以用浏览器用https方式访问(比如IE会弹出一个“安全警报”确认对话框)。如果服务器端准备好了,就要让客户端用上服务端的证书。在java里是将服务器端的证书导入客户端的keystore文件中,然后在客户端设置好环境用到这个keystore即可。在ASP里边你可以查阅相关资料。不过,有一点要明确,这个SSL协议也是标准的东东,位于tcp以上http层以下。各种语言都会提供支持的。跟Web Service没有直接的关联,不要在 Web Service里打转转。
      

  6.   

    谢谢usabcd,java里比较熟,asp第一次玩,oracle as web service也是第一次弄,所以问题比较多。
    谢谢,搞定后一定及时结帐