반년이 지난 지금 저의 basils 인코딩 된 PDF를 내 rails-app에서 Plentymarkets의 Order에 savon과 SOAP을 통해 추가하려고합니다. 이 작업은 설명 된대로 쉽지 않았으므로 Plenty-support-team에 연락했습니다. 오류가 뉴 라인이 포함 된 Base64 문자열에 관한 것이라고 들었습니다.Savon은 base64 문자열에 단락을 추가했습니다.
file = open(@kvas.pdf_attachment.url).read
@data = Base64.encode64(file).gsub(/\n/, '')
을하지만 strict_encode64
, url_save_encode64
및 .gsub("this",'that')
의 여러 변형, 스레드 '한판 승부 base64 인코딩 의 톤을 읽기를 시도에도 불구하고 나는에 allways 표시된 Base64로 문자열에서 줄 바꿈 또는 단락으로 끝낼 : 그래서 내가 그랬어 savon을 통해 전송 된 XML 요청에 Gedit은 똑같이 손상된 요청에서 복사 된 문자열을 보여줍니다. 자동 줄 바꿈을 전환 할 때까지 +
(개개의 개개인이 개행을시 작함) 또는 /
(여기가 더 산발적 인)으로 시작하는 줄 바꿈이 표시됩니다. Savon은 줄 바꿈을 base64 문자열로 해석합니까? 그 행동을 끌 수 있습니까? 여기
client = Savon.client(
:wsdl => @settings.wsdladdr,
:soap_header => {
"verifyingToken" => {
"UserID" => @tokens.userid,
"Token"=> @tokens.token
}},
:open_timeout => 20,
:read_timeout => 20,
:pretty_print_xml => false,
:log => false,
:mime_multipart => true
)
response = client.call(:add_document, message: {:oPlentySoapRequest_AddDocument => {"DocumentList"=>{"item"=>{"OrderDocumentType"=>"RepairBill", "Document"=>{"FileData"=> "#{@data}","FileEnding"=>".pdf", "FileName"=>"66667"}, "OrderID" =>"4009", "CallItemsLimit"=>"1"}}}})