2016-05-11 3 views
0

D'accord, j'ai une compréhension limitée de travailler avecAdobe signe API (signe écho) d'envoyer le document en utilisant C#

Im essayant de se familiariser de l'API avec Adobe connecter API et appuyez sur une impasse, là-bas page de test i ont enterd cela et il fonctionne

enter image description here

mais je ne sais pas comment alors faire en C#

J'ai essayé ce qui suit, mais connaître son manque les choses OAuth et je ne suis pas sûr de ce que essayer ensuite. par la voie foo.GetAgreementCreationInfo() obtient juste la chaîne qui est dans la capture d'écran, je viens de déménager hors cus il était grand et laid

var foo = new Models(); 
var client = new RestClient("https://api.na1.echosign.com/api/rest/v5"); 
// client.Authenticator = new HttpBasicAuthenticator(username, password); 
var request = new RestRequest("agreements/{AgreementCreationInfo}", Method.POST); 
request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method 
request.AddUrlSegment("AgreementCreationInfo",      foo.GetAgreementCreationInfo()); // replaces matching token in request.Resource 
IRestResponse response = client.Execute(request); 
var content = response.Content; // raw content as string 

Répondre

2

Vous interprétez mal la documentation de l'API. Le paramètre Access-Token requis dans votre API est clairement un en-tête HTTP, tandis que le AgreementCreationInfo est simplement le corps de la demande au format JSON. Il n'y a pas de segment URI, donc réécrire votre code comme suit:

var foo = new Models(); 
//populate foo 
var client = new RestClient("https://api.na1.echosign.com/api/rest/v5"); 
var request = new RestRequest("agreements", Method.POST); 
request.AddHeader("Access-Token", "access_token_here!"); 
// request.AddHeader("x-api-user", "userid:jondoe"); //if you want to add the second header 
request.AddParameter("application/json", foo.GetAgreementCreationInfo(), ParameterType.RequestBody); 

IRestResponse response = client.Execute(request); 
var content = response.Content; 

S'il vous plaît également savoir que dans RESTSharp vous n'avez pas besoin de sérialisation manuellement votre corps en JSON du tout. Si vous créez un objet fortement typé (ou juste un objet anonyme peut suffire) qui a la même structure que votre JSON final, RESTSharp le sérialisera pour vous.

Pour une meilleure approche que je vous suggère fortement de remplacer cette ligne:

request.AddParameter("application/json", foo.GetAgreementCreationInfo(), ParameterType.RequestBody); 

Avec ceux-ci:

request.RequestFormat = DataFormat.Json; 
request.AddBody(foo); 

Si l'on suppose votre objet foo est de type Models et a la structure suivante avec son propriétés:

public class Models 
{ 
    public DocumentCreationInfo documentCreationInfo { get; set; } 
} 

public class DocumentCreationInfo 
{ 
    public List<FileInfo> fileInfos { get; set; } 
    public string name { get; set; } 
    public List<RecipientSetInfo> recipientSetInfos { get; set; } 
    public string signatureType { get; set; } 
    public string signatureFlow { get; set; } 
} 

public class FileInfo 
{ 
    public string transientDocumentId { get; set; } 
} 

public class RecipientSetInfo 
{ 
    public List<RecipientSetMemberInfo> recipientSetMemberInfos { get; set; } 
    public string recipientSetRole { get; set; } 
} 

public class RecipientSetMemberInfo 
{ 
    public string email { get; set; } 
    public string fax { get; set; } 
} 
+0

Vive, cela fonctionne bien . Je savais que j'avais tort, je ne pouvais pas y arriver. J'allais changer pour l'objet transmis, mais j'avais une grosse chaîne JSON et je n'allais pas le changer en objet jusqu'à ce qu'il fonctionne de la manière la plus basique. Je crée les classes en utilisant Édition> Collage spécial> Json à la classe –

+0

Oui, c'est la bonne chose à faire. Je suis content que cela ait été utile. –

+0

Comment obtenir un jeton d'accès? Ne l'ont-ils pas désactivé en faveur du serment? Tous les utilisateurs doivent-ils avoir un compte Adobe? – Toolkit