Sub login_click(ByVal sender As Object, ByVal e As System.EventArgs)
'Dim oClient = New WebClient
Dim sUrl As String = "https://demo.docusign.net/restapi/v1/login_information?api_password=true&include_account_id_guid=true&login_settings=all"
Dim sEmail As String = "[email protected]"
Dim sPassword As String = "mypassword"
Dim sIntegratorKey As String = "myintegratorkey"
Dim sDocumentName As String = "mypdfdocument.pdf"
Dim sContentType As String = "application/pdf"
Dim oRequest As HttpWebRequest
oRequest = initializeRequest(sUrl, "GET", "", sEmail, sPassword, sIntegratorKey)
Dim oResponse As HttpWebResponse = oRequest.GetResponse
Dim baseURL As String = ""
Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream)
Dim sXML As String = oStreamReader.ReadToEnd
baseURL = parseDataFromResponse(sXML, "baseUrl")
Dim sXmlBody As String
sXmlBody = "<envelopeDefinition xmlns='http://www.docusign.com/restapi'>" & _
"<emailSubject>DocuSign API</emailSubject>" & _
"<status>sent</status>" & _
"<documents>" & _
"<document>" & _
"<documentId>1</documentId>" & _
"<name>" & sDocumentName & "</name>" & _
"</document>" & _
"</documents>" & _
"<recipients>" & _
"<signers>" & _
"<signer>" & _
"<recipientId>1</recipientId>" & _
"<email>[email protected]</email>" & _
"<name>John Smith</name>" & _
"<tabs>" & _
"<signHereTabs>" & _
"<signHere>" & _
"<xPosition>100</xPosition>" & _
"<yPosition>100</yPosition>" & _
"<documentId>1</documentId>" & _
"<pageNumber>1</pageNumber>" & _
"</signHere>" & _
"</signHereTabs>" & _
"</tabs>" & _
"</signer>" & _
"</signers>" & _
"</recipients>" & _
"</envelopeDefinition>"
sUrl = baseURL & "/envelopes"
oRequest = initializeRequest(sUrl, "POST", "", sEmail, sPassword, sIntegratorKey)
configureMultiPartFormDataRequest(oRequest, sXmlBody, sDocumentName, sContentType)
Dim sMessage As String
sMessage = getResponseBody(oRequest)
MsgBox(sMessage)
'Dim sUri As String = parseDataFromResponse(sXML, "uri")
End Sub
Function getResponseBody(ByRef oRequest As HttpWebRequest) As String
Dim oResponse As HttpWebResponse = oRequest.GetResponse
Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream)
Dim sResponseString As String = oStreamReader.ReadToEnd
Return (sResponseString)
End Function
Sub configureMultiPartFormDataRequest(ByRef oRequest As HttpWebRequest, sXmlBody As String, sDocumentName As String, sContentType As String)
oRequest.ContentType = "multipart/form-data; boundary=BOUNDARY"
Dim sRequestBodyStart As String = "\r\n\r\n--BOUNDARY\r\n" & _
"Content-Type: application/xml\r\n" & _
"Content-Disposition: form-data\r\n" & _
"\r\n" & _
sXmlBody & "\r\n\r\n--BOUNDARY\r\n" & _
"Content-Type: " & sContentType & "\r\n" & _
"Content-Disposition: file; filename='" & sDocumentName & "'; documentId=1\r\n" & _
"\r\n"
Dim sRequestBodyEnd As String = "\r\n--BOUNDARY--\r\n\r\n"
Dim oFileStream As FileStream = File.OpenRead(Server.MapPath(sDocumentName))
Dim bodyStart As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyStart.ToString)
Dim bodyEnd As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyEnd.ToString)
Dim oDataStream As Stream = oRequest.GetRequestStream
oDataStream.Write(bodyStart, 0, sRequestBodyStart.ToString.Length())
Dim buffer(4096) As Byte
Dim iLen As Integer = 0
iLen = oFileStream.Read(buffer, 0, 4096)
Do While iLen > 0
oDataStream.Write(buffer, 0, iLen)
iLen = oFileStream.Read(buffer, 0, 4096)
Loop
oDataStream.Write(bodyEnd, 0, sRequestBodyEnd.ToString.Length())
oDataStream.Close()
End Sub
Function initializeRequest(sUrl As String, sMethod As String, sBody As String, sEmail As String, sPassword As String, sIntegratorKey As String) As HttpWebRequest
Dim oRequest As HttpWebRequest
oRequest = WebRequest.Create(sUrl)
oRequest.KeepAlive = False
oRequest.Method = sMethod
AddRequestHeaders(oRequest, sEmail, sPassword, sIntegratorKey)
If sBody <> "" Then
AddRequestBody(oRequest, sBody)
End If
Return (oRequest)
End Function
Sub AddRequestHeaders(ByRef oRequest As HttpWebRequest, sEmail As String, sPassword As String, sIntegratorKey As String)
oRequest.Headers.Add("X-DocuSign-Authentication",
String.Format("<DocuSignCredentials><Username>{0}</Username><Password>{1}</Password><IntegratorKey>{2}</IntegratorKey></DocuSignCredentials>", sEmail, sPassword, sIntegratorKey))
oRequest.Accept = "application/xml"
oRequest.ContentType = "application/xml"
End Sub
Sub addRequestBody(ByRef oRequest As HttpWebRequest, sRequestBody As String)
Dim body As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBody)
Dim oDataStream As Stream = oRequest.GetRequestStream
oDataStream.Write(body, 0, sRequestBody.Length)
oDataStream.Close()
End Sub
Function parseDataFromResponse(sXML As String, sSearchToken As String) As String
Dim oXmlReader As XmlReader = XmlReader.Create(New StringReader(sXML))
Do While oXmlReader.Read()
If oXmlReader.NodeType = XmlNodeType.Element And oXmlReader.Name = sSearchToken Then
Return oXmlReader.ReadString()
End If
Loop
Return ""
End Function
閱讀它可能會有所幫助HTTP://www.codeproject。 com/Articles/14488/E-signing-PDF-documents-with-iTextSharp – 2014-09-04 04:52:57
我目前有PDF衝壓代碼工作。 PDF只需要docusign的數字簽名。我需要用於發送pdf的restful api代碼。 – 2014-09-04 04:58:24
我讀了代碼項目,並不是我想要的。我不想通過壓模向PDF上添加簽名簽名。我確實希望發送一個docusign pdf,以便使用docusign雲對接受者進行數字簽名。 – 2014-09-04 05:06:15