Web service call fails

Home Page Forums BizTalk 2004 – BizTalk 2010 Web service call fails

Viewing 1 reply thread
  • Author
    Posts
    • #14227

      I am using a vendor’s web service from an orchestration, and its schema uses an array type. The web service is already in production use from .NET code for on-demand use, but I’d like it to run from Biztalk. It couldn’t be referenced in BTS 2004, so I’m testing it out with 2006 beta 1. The orchestration simply takes a delimited flat file and transforms it into the web service format.

      Once the message enters the orchestration, an application event is logged, and it becomes dehydrated. I’ve run Ethereal against it to see if it even transmits the data to the target server, but no HTTP traffic was detected. The error message references an element that doesn’t exist in either the target or destination schema: \”data\”.

      Would anyone be so kind as to point me in the right direction? My app event log entry is included below.

      ——————————

      Event Type: Warning
      Event Source: BizTalk Server 2006
      Event Category: BizTalk Server 2006
      Event ID: 5743
      Date: 11/2/2005
      Time: 9:27:46 AM
      User: N/A
      Computer: BIZ1
      Description:
      The adapter failed to transmit message going to send port \”CostImport_1.0.0.0_CostImport.UploadCostsToBilling_CostUploadPort_811726b57b285b31\” with URL \”http://dev1/api/Service.asmx\”. It will be retransmitted after the retry interval specified for this Send Port. Details:\”SoapExceptionServer was unable to process request. –> The length of the data exceeds the size of the fixed width field.
      Parameter name: data \”.

    • #14228

      I altered my orchestration to include event log entries. The receive pipeline successfully disassembled the flat file into XML, and the map successfully transformed the message into the array structure.

      I did notice a couple weird things about the XML I received from the outerXml property, though.

      1. After receiving from the pipeline, the message’s XML contained a single trailing period.
      2. After the map was applied, the destination message’s XML did not contain the last 2 closing element tags for the array.

      I’ve looked at the XML inside the dehydrated message content from within the send port instance and it looks just fine, closing tags and all. Is this an OuterXml thing, or something worse?

      • #14229

        Still not working. I read in other groups that messages larger than 48K could cause similar port sending issues, but my messages are always under 20K.

        I went back and added a scope with SOAPException and System.Exception handlers to try to get more details, but exceptions aren’t being thrown when it fails.

        I posted this in the biztalk beta newsgroup as well. If I get it to work, I’ll post the resolution.

        • #14230

          OK, I haven’t fixed it yet, but I’m close. The initial problem I had was a typo in the namespace of the property schema. This caused BizTalk to not send the SOAP header. Now that I’ve corrected the typo, I am getting better error messages.

          If the WSDL file declares a SOAP header as only mixed=\”true\”, what data type should I use in the property schema? I initially tried xs:string, but I received the error attached below.

          —————- WSDL excerpts —————-

          <s:element name=\”user\” type=\”tns:user\” />
          <s:complexType name=\”user\” mixed=\”true\” />

          <wsdl:message name=\”Createuser\”>
          <wsdl:part name=\”user\” element=\”tns:user\” />
          </wsdl:message>

          <wsdl:input>
          <soap:body use=\”literal\” />
          <soap:header message=\”tns:Createuser\” part=\”user\” use=\”literal\” />
          </wsdl:input>

          —————-Error ——————–

          Details:\”Failed to initialize the SOAP header field or property \”userValue\”. Details: \”System.InvalidOperationExceptionThere is an error in XML document (1, 1).\”.
          Possible reasons are:
          1) MemberName property of System.Web.Services.Protocol.SoapHeaderAttribute does not map to a field or property in the type.
          2) The message context property value associated with the header cannot be converted to the target header type.
          3) The target field or property is read-only or cannot be modified. \”.

          • #14231

            Unfortunately, all I have in the xsd is:

            <xs:element name=\”user\” type=\”tns:user\” />
            <xs:complexType name=\”user\” mixed=\”true\” />

            • #14232

              I fixed this by adding <?xml version=\”1.0\” encoding=\”utf-8\” ?> to the
              beginning of the string.

              Everything works now.

              • #14233

                It seems like your input message is incorrect.

                Are you using a flat file disassemblier on the Receive Pipeline? If so, that will turn the message into XML. That might not be what your web service is actually expecting?

                You might also want to try adding some Event Log Writes in the Orchestration. You can set your message to an XmlDocument and write out oDoc.OuterXml to see exactly what your web service input looks like.

                Hope this helps.

                • #14234

                  Strange. I have not seen that before – but I have not looked that closely.

                  Were you able to get the web service call to work?

                  • #14235

                    Can you look at the complex type and see how it is defined? It should be in the schema someplace. I would have guessed it was a string

                    Maybe something else is wrong someplace.

Viewing 1 reply thread
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.