You need to sign in to do that
Don't have an account?
priyanka.mv26
Integrating apex with NetDocuments
I am trying to access NetDocuments API from Salesforce.
I am not sure how do we maintain session between successive calls to API.
Please let me know if you could help me out.
Thanks in advance.
Thank you very much for your reply..
I fixed the session maintenance problem. I modified the line
stor.inputHttpHeaders_x.put('Cookie', 'name=value');
as
stor.inputHttpHeaders_x.put('Cookie', 'mycookie =' + cookieop);
Now it is invoking the Search function.
But now my problem is..
The search function is returning the response as
<storageList>
<storageObject id=”/abc/h/t/g/i/~031014163114506.nev” location=”c:\temp\contract.doc” visId=”2343-5823-3820” checkedOut=”Y”/>
<storageObject id=”/abc/p/m/s/i/~031014162932566.nev” location=”c:\temp\Jones Deposition.doc” visId=”4283-2834-3485” checkedOut=”Y”/>
</storageList>
But my WSDL2Apex class has no definitions for the tag storageList and storageObject and hence it is showing the error below
Web service callout failed: Unable to parse callout response. Apex type not found for element storageList
Please help... Thank you very much in advance..
All Answers
Are u using Webserives API or Rest servies API to access .Net?
Yes..
Hi,
NetDocuments APIs are client SOAP and interactive. They are available at: https://support.netdocuments.com/index.php?/Knowledgebase/List/Index/10/netdocuments-apis Additionally, you can email email@support.netdocuments.com with additional questions.
Best Regards,
Marriott
marriott@netdocuments.com
Hi marriottmurdock,
Thanks for your reply...
Below is my controller code..
public with Sharing class DisplayNetDocsFiles_Controller
{
public netdocumentsComNdapi1.SearchResult_element res { get; set; }
public string cookieop {get;set;}
public string myHeader {get;set;}
public string sessionid {get; set;}
netdocumentsComNdapi.LoginResponse_element response_x;
netdocumentsComNdapi.DirectorySoap ndapi;
public DisplayNetDocsFiles_Controller(ApexPages.StandardController controller)
{
ndapi = new netdocumentsComNdapi.DirectorySoap();
ndapi.outputHttpHeaders_x = new Map<String, String>();
ndapi.Login('username','passwd');
cookieop = ndapi.outputHttpHeaders_x.get('Set-Cookie');
myHeader = ndapi.outputHttpHeaders_x.get('My-Header');
netdocumentsComNdapi1.ArrayOfString aos = new netdocumentsComNdapi1.ArrayOfString();
aos.string_x = new string[]{'lastmodified'};
netdocumentsComNdapi1.storageSoap stor = new netdocumentsComNdapi1.storageSoap();
string criteria = '=3(' + 'CA-810623' + ') =10([' + 'NG-6226HXIP' + '])';
stor.inputHttpHeaders_x = new Map<String, String>();
stor.inputHttpHeaders_x.put('Authorization',cookieop);
stor.inputHttpHeaders_x.put('Cookie', 'name=value');
stor.inputHttpHeaders_x.put('myHeader', 'myValue');
res = stor.Search(criteria, aos);
}
}
The steps I followed are
1. Downloaded Directory, Storage WSDL from NetDocuments
2. Created WSDL2Apex classes named netdocumentsComNdapi1 and netdocumentsComNdapi from Storage and Directory WSDL repectively.
3. Written the above code to invoke search function in NetDocuments
4. Now my problem is when I invoked login method, login is successful and sessionID is generated.
5. I am not able to maintain the session in the next successive calls like search in my above code.
The error message I received is
Web service callout failed: WebService returned a SOAP Fault: Server was unable to process request. ---> No authentication session. The authentication session has timed out or was not established prior to this call. faultcode=soap:Server faultactor=
Anybody please help..
I'll have Bradlee Duncan (bduncan@netdocuments.com) respond, as he knows our APIs better than I.
I believe you're trying to link a SOAP session to a web session using the user's web server. With that assumption, there are at least two options.
The easier route would be to place the SOAP session cookies in the user's cookies for the web requests, and use those on the controller side, if they are present (or kick off a new session if they are not). However, we only recommend this method if the user is using SSL. If they are not using SSL, this method could compromise the security of their account.
The slightly more difficult, but more secure route would be to store the SOAP session cookies on the webserver; an appropriate place might be in the webserver's session database.
Let me know if you have additional questions or need clarification.
Thank you very much for your reply..
I fixed the session maintenance problem. I modified the line
stor.inputHttpHeaders_x.put('Cookie', 'name=value');
as
stor.inputHttpHeaders_x.put('Cookie', 'mycookie =' + cookieop);
Now it is invoking the Search function.
But now my problem is..
The search function is returning the response as
<storageList>
<storageObject id=”/abc/h/t/g/i/~031014163114506.nev” location=”c:\temp\contract.doc” visId=”2343-5823-3820” checkedOut=”Y”/>
<storageObject id=”/abc/p/m/s/i/~031014162932566.nev” location=”c:\temp\Jones Deposition.doc” visId=”4283-2834-3485” checkedOut=”Y”/>
</storageList>
But my WSDL2Apex class has no definitions for the tag storageList and storageObject and hence it is showing the error below
Web service callout failed: Unable to parse callout response. Apex type not found for element storageList
Please help... Thank you very much in advance..
Finally I am done with Integrating NetDocuments with SF using NetDocuments API..
Thanks for your response...
Now I am facing another issue..
I am trying to create a document in NetDocuments through API..
I invoked create method and it is creating document in NetDocs..
But I am unable to open the document.. Please help..
Thanks in advance...