2011-08-27 35 views
1

我正在嘗試向Web服務發送請求。該WSDL可以在這裏看到wsdl沒有序列化信息

https://amsel.dpwn.net/abholportal/gw/lp/schema/1.0/var3ws.wsdl

創建的請求是直截了當

  BookLabelRequest request = new BookLabelRequest(); 

     RpPartnerType rpt = new RpPartnerTypeClient(); 
     dhlService.BookLabelResponse response = rpt.BookLabel(new dhlService.BookLabelRequest()); 

但我如何通過所需要的參數,就當沒有序列化BookLabelRequest暴露?以及如何通過標題中的用戶名/密碼?

樣品SOAP請求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:var="https://amsel.dpwn.net/abholportal/gw/lp/schema/1.0/var3bl"> 
<soapenv:Header> 
    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsse:UsernameToken> 
      <wsse:Username>username</wsse:Username> 
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password> 
     </wsse:UsernameToken> 
    </wsse:Security> 
</soapenv:Header> 
<soapenv:Body> 
    <var:BookLabelRequest portalId ="OnlineRetoure" deliveryName="Deutschland_Var3" 
          shipmentReference="notreturnedonlabel" customerReference="CustomerRef1234567890" 
          labelFormat="PDF" senderName1="Markus" senderName2="Beck" 
          senderCareOfName="actualnotinuse" senderContactPhone="" 
          senderStreet="Buschmühlenstraße" senderStreetNumber="40" 
          senderBoxNumber="" senderPostalCode="58093" senderCity="Hagen"/> 
</soapenv:Body> 


WSDL文件是不是我的,所以我不能編輯它。有沒有其他的方式來導入這個。我嘗試使用svcutil從xsd創建數據合同,但我收到了錯誤消息:

輸入從「https://amsel.dpwn.net/abholportal/gw/lp/schema/1.0/ var3bl的.xsd」是與其他選項

我試圖通過用戶名和密碼到代理以及

  RpPartnerType test = new RpPartnerTypeClient(); 
     ((RpPartnerTypeClient)test).ClientCredentials.UserName.UserName = "username"; 
     ((RpPartnerTypeClient)test).ClientCredentials.UserName.Password = "password"; 

     dhlService.BookLabelResponse response = test.BookLabel(new dhlService.BookLabelRequest()); 

,但得到的錯誤不一致:驗證失敗:沒有指定的

用戶名綁定安全性:

   <security mode="Transport"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 

回答

1

您的WSDL是進口XSD與其他路徑序列信息:

https://amsel.dpwn.net/abholportal/gw/lp/schema/1.0/var3bl.xsd 

但在WSDL位置應指定完整這條道路。

如果你需要使用UserNameToken配置文件必須先指定爲您的客戶端綁定:

<bindings> 
    <basicHttpBinding> 
    <binding name="secured"> 
     <security mode="TransportWithMessageCredential"> 
     <transport clientCredentialType="UserName" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

並使用在客戶端的端點這種結合:

<client> 
    <endpoint address="..." name="..." contract="..." binding="basicHttpBining" 
      bindingConfiguration="secured" /> 
</client> 

一旦配置客戶端您需要創建服務代理ANS設置憑據」

proxy.ClientCredentials.UserName.UserName = ...; 
proxy.ClientCredentials.UserName.Password = ...;