2013-11-07 1 views
1

Позволяет пользователю DocuSign api/sdk отправить документ для подписывания. Примеры говорят примерно так:Использование APIServiceSoapClient для DocuSign

//.NET 
APIServiceSoapClient apiService = new APIServiceSoapClient(); 
apiService.ClientCredentials.UserName.UserName = "Your DocuSign UserName here"; 
apiService.ClientCredentials.UserName.Password = "Your DocuSign Password here"; 

Какой я, конечно, пробовал, но не работал.

Я получаю следующее сообщение об ошибке: Требования безопасности не удовлетворяются, поскольку заголовок безопасности отсутствует во входящем сообщении.

Ive пытался

var username = "myemail"; 
var pass = "mypass"; 
var iteratorKey = "iteratorkey"; 

APIServiceSoapClient apiService = new APIServiceSoapClient(); 
apiService.ClientCredentials.UserName.UserName = username; 
//also tried ...UserName = "[" + iteratorKey + "]" + username; 
apiService.ClientCredentials.UserName.Password = pass; 

ли это не там, где все требования безопасности будут выполнены? может быть? Использование APIService не DSAPIService, если это имеет значение.

ответ

2

В итоге мне пришлось использовать другой способ передачи учетных данных. Который я нашел где-то в другом месте. Я все еще не уверен, как правильно использовать другой метод, который я пробовал, хотя, если кто-то знает, как использовать другой метод, это было бы здорово только потому, что код стал более быстрым и легче следовать.

string auth = @"<DocuSignCredentials> 
        <Username>email</Username> 
        <Password>pass</Password> 
        <IntegratorKey>key</IntegratorKey> 
       </DocuSignCredentials>"; 

DSAPIServiceSoapClient apiService = new DSAPIServiceSoapClient();    

using (var scope = new System.ServiceModel.OperationContextScope(apiService.InnerChannel)) 
{ 
    var httpRequestProperty = new System.ServiceModel.Channels.HttpRequestMessageProperty(); 
    httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth); 
    System.ServiceModel.OperationContext.Current.OutgoingMessageProperties[System.ServiceModel.Channels.HttpRequestMessageProperty.Name] = httpRequestProperty; 

    EnvelopeStatus envStatus = apiService.CreateAndSendEnvelope(envelope); 
    return envStatus.EnvelopeID; 
} 
0

Есть два способа передачи полномочий членов через SOAP API DocuSign в (в отличие от более нового REST API):

  1. заголовок SOAP с помощью WS-Security UsernameToken
  2. HTTP Header с помощью настраиваемого поля «X -DocuSign-Authentication "

API управления учетными записями поддерживает только метод аутентификации HTTP Header, а все остальные могут поддерживать любой метод.

Кроме того, SOAP API DocuSign имеет две конечные точки API: API.asmx и DSAPI.asmx. Конечная точка API.asmx требует, чтобы в аутентификации заголовка SOAP указывалось WS-Security UsernameToken. Для конечных точек DSAPI.asmx и AccountManagement.asmx требуется HTTP-аутентификация заголовка.

+0

Итак, как передать заголовок http в класс APIServiceSoapClient? – user1938919