2016-07-12 1 views
0

반년이 지난 지금 저의 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 문자열로 해석합니까? 그 행동을 끌 수 있습니까? 여기

내 Savon 전화 :

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"}}}}) 

답변

0
글쎄, 최대 그물 아래로 반년 시도하는 모든 후, 나는 답변 (이 질문을 게시 한 후 하루) 발견했습니다 그것은 모든 쉽게

:

Base64.encode64(Base64.encode64(file)).sub(/\n/, '') 

이 트릭 이제 64 기수 문자열은 그 생각 것에서 one_liner 이다습니까? 더블 인코딩 base64 문자열 ??? !!! 좋은 문서는 많은 문제에서 당신을 구해줍니다.