Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Web service call fails
- This topic has 8 replies, 1 voice, and was last updated 9 years, 1 month ago by
community-content.
-
AuthorPosts
-
-
November 2, 2005 at 4:43 PM #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 \”. -
November 2, 2005 at 10:19 PM #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?
-
November 4, 2005 at 2:16 AM #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.
-
November 4, 2005 at 9:37 PM #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. \”.-
November 7, 2005 at 3:12 PM #14231
Unfortunately, all I have in the xsd is:
<xs:element name=\”user\” type=\”tns:user\” />
<xs:complexType name=\”user\” mixed=\”true\” />-
November 7, 2005 at 4:49 PM #14232
I fixed this by adding <?xml version=\”1.0\” encoding=\”utf-8\” ?> to the
beginning of the string.Everything works now.
-
November 2, 2005 at 7:14 PM #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.
-
November 3, 2005 at 11:53 PM #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?
-
November 6, 2005 at 3:58 AM #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.
-
-
-
-
-
-
-
-
-
AuthorPosts
- The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.