2013-08-14 2 views
1

SOAP 기반 웹 서비스를 사용하고 있습니다. Savonrb를 사용하여 POST 요청을 통해 서비스를 호출합니다. Nokogiri를 사용하여 XML을 작성하고 Savonrb를 사용하여 서비스로 보냅니다.Nokogiri가 왜 네임 스페이스 유형 오류를 제공합니까?

내 응용 프로그램은 Rails 3.1을 사용하여 작성되었습니다. 이 서비스는 내 로컬 호스트에 노력하고 있습니다,하지만 우리는 생산에 그것을 테스트하는 경우가 간헐적으로 오류가 내가 다음과 같은 오류 얻을 :

TypeError (Nokogiri::XML::Namespace can't be coerced into Nokogiri::XML::Namespace) 

이 사람이 날이 오류 메시지가 무엇을 의미하는지 알 수 있도록 할 수 있습니까? 망가 -

builder = Nokogiri::XML::Builder.new 
builder.Envelope{ 
builder.parent.namespace = builder.parent.add_namespace_definition("soapenv", "http://schemas.xmlsoap.org/soap/envelope/") 
builder['soapenv'].Body{ 
    builder['ns0'].GetParty("xmlns:ns0" => "http://www.cisco.com/cixs2.0/oagis", "xmlns:ns1" => "http://www.openapplications.org/oagis/9"){ 
    builder['ns1'].ApplicationArea{ 
     builder['ns1'].Sender{ 
     builder['ns1'].LogicalID_ sender_information['LogicalID'] 
     builder['ns1'].ComponentID_ sender_information['ComponentID'] 
     builder['ns1'].TaskID_ sender_information['TaskID'] 
     builder['ns1'].ReferenceID_ sender_information['ReferenceID'] 
     builder['ns1'].AuthorizationID_ sender_information['AuthorizationID'] 
     } 
     builder['ns1'].CreationDateTime_ DateTime.now.to_s('yyyy-MM-ddTHH:mm:sszzz') 
     builder['ns1'].BODID(1214201110) 
    } 
    builder['ns0'].DataArea{ 
     builder['ns0'].Get(get_condition){ 
     builder['ns1'].Expression('expressionLanguage' => "String"){ 
      builder.text "All" 
     } 
     builder.__send__ :insert, Nokogiri::XML::DocumentFragment.parse(hierarchy) 

     builder.__send__ :insert, Nokogiri::XML::DocumentFragment.parse(search_condition) 

     builder['ns0'].SearchCriteria{ 
      builder['ns0'].MatchAlgorithm("EXACT_SEARCH") 
      builder.__send__ :insert, Nokogiri::XML::DocumentFragment.parse(search_type) 
      builder['ns0'].SearchSource(search_source){ 
      builder.text "DEFAULT" 
      } 
      builder['ns0'].ParallelSearchIndicator('true') 

      builder['ns0'].StopWhenResultFoundIndicator('true') 
     } 
     } 
    } 
    } 
} 
} 
return builder.to_xml 

답변

0

Can anyone let me know what that error message means?

예 :

그것을 구축하는 내 코드입니다.

http://nokogiri.org/Nokogiri/XML/Builder.html

는 그 작동 여기에 아이디어를 확인하지 않는 경우 :

Adding namespace using Nokogiri's XML Builder

내가 시도 할 첫번째 일은 문서 (네임 스페이스 섹션으로 스크롤)의 예이다
+0

개발 모드에서 실행하면 정상적으로 작동합니다. 프로덕션 모드에서 실행할 때만이 오류가 발생합니다. 더 많은 것이 있어야합니다. 스레드 문제 일 수 있습니다. nokogiri 스레드가 안전합니까? 어떻게 개발 모드에서 테스트합니까 – Ramya