2014-09-23 115 views
0

有一个以前工作的Java Web服务,上周突然中断。Saber SOAP调用返回空字符串

请求的版本没有永远更新,它在版本1.2.7上,当前版本是1.7.5,所以我不确定是否是这个问题。我已经通过代码进行了调试,并且HTTP头文件,createSessionRQ和其他一切正常,但Bargain Finder Max调用最终会在解析时抛出SAXException,java.io.IOException: '' For input string: ""。只要我在第一遍尝试解析传入消息时就会发生这种情况。所有其他答案都解析得很好。解析代码全部来自apache axis 1库。 XML示例如下。再一次,这个工作一直持续到上周。

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <SOAP-ENV:Header> 
     <eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="1.0"> 
     <eb:From> 
     <eb:PartyId type="urn:x12.org:IO5:01">company</eb:PartyId> 
     </eb:From> 
     <eb:To> 
     <eb:PartyId type="urn:x12.org:IO5:01">webservices.sabre.com</eb:PartyId> 
     </eb:To> 
     <eb:CPAId>0WPB</eb:CPAId> 
     <eb:ConversationId>convoid</eb:ConversationId> 
     <eb:Service eb:type="OTA">Air Shopping Service</eb:Service> 
     <eb:Action>BargainFinderMaxRQ</eb:Action> 
     <eb:MessageData> 
     <eb:MessageId>mid:0_2014-09-22T21:43:40m</eb:MessageId> 
     <eb:Timestamp>2014-09-22T21:43:40</eb:Timestamp> 
     <eb:TimeToLive>2014-09-22T21:43:40</eb:TimeToLive> 
     </eb:MessageData> 
     <eb:DuplicateElimination/> 
     <eb:Description>Bargain Finder Max Service</eb:Description> 
     </eb:MessageHeader> 
     <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility"> 
     <wsse:BinarySecurityToken>tokenhere</wsse:BinarySecurityToken> 
     </wsse:Security> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <ns1:OTA_AirLowFareSearchRQ Version="1.2.7" xmlns:ns1="http://www.opentravel.org/OTA/2003/05"> 
      <ns1:POS> 
      <ns1:Source PseudoCityCode="0WPB"> 
      <ns1:RequestorID ID="1" Type="1"> 
     <n 

s1:CompanyName Code="TN">TN</ns1:CompanyName> 

</ns1:RequestorID> 

</ns1:Source> 

</ns1:POS> 

     <ns1:OriginDestinationInformation RPH="1"> 
    <ns1:DepartureDateTime>2014-10-31T00:00:00</ns1:DepartureDateTime> 

    <ns1:OriginLocation LocationCode="BWI"/> 

    <ns1:DestinationLocation LocationCode="MBJ"/> 

     <ns1:TPA_Extensions> 
    <ns1:SegmentType Code="O"/> 

</ns1:TPA_Extensions> 

</ns1:OriginDestinationInformation> 

     <ns1:OriginDestinationInformation RPH="2"> 
    <ns1:DepartureDateTime>2014-11-03T00:00:00</ns1:DepartureDateTime> 

    <ns1:OriginLocation LocationCode="MBJ"/> 

    <ns1:DestinationLocation LocationCode="BWI"/> 

     <ns1:TPA_Extensions> 
    <ns1:SegmentType Code="O"/> 

</ns1:TPA_Extensions> 

</ns1:OriginDestinationInformation> 

     <ns1:TravelPreferences> 
    <ns1:CabinPref Cabin="Y" PreferLevel="Preferred"/> 

     <ns1:TPA_Extensions> 
    <ns1:TripType Value="Return"/> 

</ns1:TPA_Extensions> 

</ns1:TravelPreferences> 

     <ns1:TravelerInfoSummary> 
    <ns1:SeatsRequested>1</ns1:SeatsRequested> 

    <ns1:AirTravelerAvail> 
    <ns1:PassengerTypeQuantity Code="ADT" Quantity="2"/> 



</ns1:AirTravelerAvail> 

</ns1:TravelerInfoSummary> 

     <ns1:TPA_Extensions> 
     <ns1:IntelliSellTransaction> 
    <ns1:RequestType Name="50ITINS"/> 

</ns1:IntelliSellTransaction> 

</ns1:TPA_Extensions> 

</ns1:OTA_AirLowFareSearchRQ> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

回答

0

这是一个轴1个问题,你可以升级到轴2或执行以下修改:

应改为:

CommonHTTPsender是HTTPSender的改进版本。

希望这些信息对您有所帮助。

+0

这样做。更改axis.jar中的client-configuration.wdll以使用传输方法CommonsHTTPSender。还必须包括必要的罐子才能让它工作。 – czobrisky 2014-10-01 17:26:04