<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SOAP - Web Service</title>
	<atom:link href="http://www.soapbuilders.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.soapbuilders.org</link>
	<description></description>
	<lastBuildDate>Sat, 23 Jul 2011 08:11:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Create And Consume SOAP Web Services Using WSDL</title>
		<link>http://www.soapbuilders.org/142-create-and-consume-soap-web-services-using-wsdl.html</link>
		<comments>http://www.soapbuilders.org/142-create-and-consume-soap-web-services-using-wsdl.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 08:11:52 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=142</guid>
		<description><![CDATA[NuSOAP is a group of PHP classes that allow developers to create and consume SOAP web services. It does not require any special PHP extensions. The current release version (0.6.7) of NuSOAP at the time this was written (03-November-2004), supports much of the SOAP 1.1 specification. It can generate WSDL &#8230;<p><a href="http://www.soapbuilders.org/142-create-and-consume-soap-web-services-using-wsdl.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/applicationIntegration.png"><img class="alignright size-full wp-image-143" title="applicationIntegration" src="http://soapbuilders.org/wp-content/uploads/2011/07/applicationIntegration.png" alt="" width="250" height="188" /></a>NuSOAP is a group of PHP classes that allow developers to create and consume SOAP web services. It does not require any special PHP extensions. The current release version (0.6.7) of NuSOAP at the time this was written (03-November-2004), supports much of the SOAP 1.1 specification. It can generate WSDL 1.1 and also consume it for use in serialization. Both rpc/encoded and document/literal services are supported. However, it must be noted that NuSOAP does not provide coverage of the SOAP 1.1 and WSDL 1.1 that is as complete as some other implementations, such as .NET and Apache Axis.</p>
<p>This document follows up Introduction to NuSOAP, Programming with NuSOAP, and Programming with NuSOAP Part 2 with additional samples that demonstrate how to use NuSOAP to create and consume SOAP web services using WSDL.</p>
<h3>Hello, World Redux</h3>
<p>Showing no imagination whatsoever, I used the ubiquitous &#8220;Hello, World&#8221; example in Introduction to NuSOAP. In that document, I showed the SOAP request and response exchanged by the client and server. Here, I extend that sample to use WSDL.</p>
<p>A WSDL document provides metadata for a service. NuSOAP allows a programmer to specify the WSDL to be generated for the service programmatically using additional fields and methods of the soap_server class.</p>
<p>The service code must do a number of things in order for correct WSDL to be generated. Information about the service is specified by calling the configureWSDL method. Information about each method is specified by supplying additional parameters to the register method. Service code for using WSDL is shown in the following example.</p>
<pre>&lt;?php</pre>
<pre>// Pull in the NuSOAP code</pre>
<pre>require_once('nusoap.php');</pre>
<pre>// Create the server instance</pre>
<pre>$server = new soap_server();</pre>
<pre>// Initialize WSDL support</pre>
<pre>$server-&gt;configureWSDL('hellowsdl', 'urn:hellowsdl');</pre>
<pre>// Register the method to expose</pre>
<pre>$server-&gt;register('hello',                // method name</pre>
<pre>    array('name' =&gt; 'xsd:string'),        // input parameters</pre>
<pre>    array('return' =&gt; 'xsd:string'),      // output parameters</pre>
<pre>    'urn:hellowsdl',                      // namespace</pre>
<pre>    'urn:hellowsdl#hello',                // soapaction</pre>
<pre>    'rpc',                                // style</pre>
<pre>    'encoded',                            // use</pre>
<pre>    'Says hello to the caller'            // documentation</pre>
<pre>);</pre>
<pre>// Define the method as a PHP function</pre>
<pre>function hello($name) {</pre>
<pre>        return 'Hello, ' . $name;</pre>
<pre>}</pre>
<pre>// Use the request to (try to) invoke the service</pre>
<pre>$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';</pre>
<pre>$server-&gt;service($HTTP_RAW_POST_DATA);</pre>
<pre>?&gt;</pre>
<p>Now for some magic. Point a Web browser at this service, which in my environment is at http://localhost/phphack/hellowsdl.php. The HTML that is returned to your browser gives you links to view the WSDL for the service or view information about each method, in this case the hello method. The screen should look something like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/142-create-and-consume-soap-web-services-using-wsdl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Basics Of Working With Web Services</title>
		<link>http://www.soapbuilders.org/139-the-basics-of-working-with-web-services.html</link>
		<comments>http://www.soapbuilders.org/139-the-basics-of-working-with-web-services.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 08:09:05 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=139</guid>
		<description><![CDATA[ADF to fully exploit the use of Web services for communicating with ArcGIS Server services. Directly as a developer with the ADF and ArcGIS Server, it is important to understand the use of SOAP and its relationship with the WSDL file with ArcGIS. This article describes some of the basics &#8230;<p><a href="http://www.soapbuilders.org/139-the-basics-of-working-with-web-services.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>ADF to fully exploit the use of Web services for communicating with ArcGIS Server services. Directly  as a developer with the ADF and ArcGIS Server, it is important to  understand the use of SOAP and its relationship with the WSDL file with  ArcGIS. This article describes some of the basics of working with Web Services, SOAP and WSDL with ArcGIS Server. After this article you must read some documents that explain how the ideas discussed here apply in relation to a specific ADF.</p>
<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/soa1pudws.gif"><img class="alignleft size-medium wp-image-140" title="soa1pudws" src="http://soapbuilders.org/wp-content/uploads/2011/07/soa1pudws-300x282.gif" alt="" width="300" height="282" /></a><br />
Web services applications can communicate via messages from different protocols. Because  Web services means for communication between applications in the  program itself is written in a programming language, is  language-independent communications. XML is the format used to maintain present information about applications. XML messaging via SOAP (Simple Object Access Protocol). SOAP defines a header and a valid means of message exchange. This exchange of messages is usually via HTTP, but actually a protocol such as SMTP, FTP, or DCOM, to be known. SOAP, XML, and wrap the message so that the applications received and processed they can be transferred appropriaptely.</p>
<p>&nbsp;</p>
<p>WSDL,  but also explains what Web services do not, what methods it has, what  parameters and the guy who knows how you and the port used for  communication. WSDL defines the valid content of XML SOAP messages are transmitted. WSDL is a specification, such as IDL, interfaces and parameters to describe the Web. The  available methods are usually together in &#8220;port&#8221;, which can be viewed  as a Web destination for the various activities they are interested in  groups. A WSDL may contain one or more ports. Has the WSDLs provided by ESRI, a single interface for WSDL. For example, all methods show the MapServer WSDL recorded as part MapServerPort. Another  feature of the Web service described in WSDL that specifies a protocol  for sending messages, and optionally the URL of the corresponding  server. WSDL specification does all this  work in a very general, so that the toolkit in various languages, such  as the Axis in Java, to generate code from WSDL descriptions.</p>
<p>&nbsp;</p>
<p>WSDLs and ArcGIS Server<br />
If you are in the installation directory under the XmlSchema found eight WSDL file. Each fits the description of the ArcGIS Server Web service can publish. Each  WSDL corresponds roughly with the ArcObjects classes, for example,  corresponds to the object MapServer.wsdl MapServer and  GeoDataServer.wsdl GeoDataServer consistent with the object. Because  Web services are usually only text messages (XML) to send between  applications, there are differences in method signatures and data types  from WSDL and ArcObjects. If you are open GeocodeServer.wsdl there are two major stages, you need to understand. The first part is &lt;types&gt; element and the second part is an element PortType.</p>
<p>&nbsp;</p>
<p>Value of the items<br />
&lt;types&gt; All the elements that defines the data type for WSDL, and valuables. This section contains definitions for all elements that are used as parameters to a web service method to pass. Object  value can consist of objects of value, but at the end of the &#8220;end&#8221; must  be a valid data type schema type such as String, int length or XML  data. When a Java toolkit for the sale of  all classes of the Java-like element in the WSDL Java objects of value,  as the old Java objects (POJOs). For  example, if you look at the point in the WSDL Look, this is an XML  representation of a point sufficient to ArcObjects Web service  operation:</p>
<p>&nbsp;</p>
<p>&lt;xs:complexType name=&#8221;PointN&#8221;&gt;<br />
&lt;xs:complexContent&gt;<br />
&lt;xs:extension base=&#8221;Point&#8221;&gt;<br />
&lt;xs:sequence&gt;<br />
&lt;xs:element name=&#8221;X&#8221; type=&#8221;xs:double&#8221;/&gt;<br />
&lt;xs:element name=&#8221;Y&#8221; type=&#8221;xs:double&#8221;/&gt;<br />
&lt;xs:element name=&#8221;M&#8221; type=&#8221;xs:double&#8221; minOccurs=&#8221;0&#8243;/&gt;<br />
&lt;xs:element name=&#8221;Z&#8221; type=&#8221;xs:double&#8221; minOccurs=&#8221;0&#8243;/&gt;<br />
&lt;xs:element name=&#8221;ID&#8221; type=&#8221;xs:int&#8221; minOccurs=&#8221;0&#8243;/&gt;<br />
&lt;xs:element name=&#8221;SpatialReference&#8221; type=&#8221;SpatialReference&#8221; minOccurs=&#8221;0&#8243;/&gt;<br />
&lt;/xs:sequence&gt;<br />
&lt;/xs:extension&gt;<br />
&lt;/xs:complexContent&gt;<br />
&lt;/xs:complexType&gt;</p>
<p>&nbsp;</p>
<p>The <a href="http://edndoc.esri.com/arcobjects/9.2/Java/api/arcgiswebservices/com/esri/arcgisws/PointN.html">Javadoc</a> for the class generated using the AXIS toolkit, shows a Java class which is very similar to a POJO. From the WSDL definition we can see that M, Z, ID, and SpatialReference are not required properties since their minOccurs attribute is equal to 0. Therefore when you need to use a PointN value object you can create it using the default construct, set the X and Y, and then pass it as a parameter. There is no need to create the object on the Server Context, it is created on the local machine. When you are setting the object&#8217;s properties since they are set locally no remote call is made to the ArcGIS serverl.</p>
<h4>Port Usage</h4>
<p>Inside the &lt;portType&gt; element is the listing of all the methods that can be called on the web service. For example, one of the calls you can make is ReverseGeocode, which takes a point and figures out the closest address.</p>
<p>&lt;operation name=&#8221;ReverseGeocode&#8221;&gt;<br />
&lt;input message=&#8221;e:ReverseGeocodeIn&#8221;/&gt;<br />
&lt;output message=&#8221;e:ReverseGeocodeOut&#8221;/&gt;<br />
&lt;/operation&gt;</p>
<p>There is a definition for the input message (the input parameters) and the output message (the returned values) in another section of the WSDL. In this case they are defined earlier in the file as &lt;message&gt; elements, which are then mapped to &lt;types&gt;. Through this mapping you can see that a ReverseGeocode input message contains a location, which is a point, a boolean to indicate if intersections should be returned, and some properties in a PropertySet</p>
<p>&lt;xs:element name=&#8221;ReverseGeocode&#8221;&gt;<br />
&lt;xs:complexType&gt;<br />
&lt;xs:sequence&gt;<br />
&lt;xs:element name=&#8221;Location&#8221; type=&#8221;Point&#8221;/&gt;<br />
&lt;xs:element name=&#8221;ReturnIntersection&#8221; type=&#8221;xs:boolean&#8221;/&gt;<br />
&lt;xs:element name=&#8221;PropMods&#8221; type=&#8221;PropertySet&#8221;/&gt;<br />
&lt;/xs:sequence&gt;<br />
&lt;/xs:complexType&gt;<br />
&lt;/xs:element&gt;</p>
<p>When the WSDL is used to generate Java proxies through AXIS a class will be generated named GeocodeServerPort which contains all the methods you can call on the ArcGIS Server GeocodeServer object using web services. The GeocodeServerPort object is instantiated in the local JVM but any method call on this class will execute a remote call to the server. Any object returned from the server will be a value object and therefore accessing its properties will not require calls to the server. Therefore, the only methods in the Java classes generated from the WSDL which make remote calls will be those methods exposed on a *Port object.</p>
<h3>Implications for ArcGIS Server Developer</h3>
<p>Using SOAP has several advantages for ArcGIS Server developers. The greatest advantage is that the value objects are Java objects in the local JVM. Because they reside in the local JVM and they are pure Java they are easier to debug and work with in general. Another serious advantage is that the only remote calls are those on the *Port objects. When using ArcGIS Server with the server API, each call to set a variable or execute a GIS operation is a remote call. Because the value objects are in the local JVM all calls to their mutators are local calls. When you call one of the methods on a *Port object you pass the value object as a parameter. The returned objects are also value objects, so retrieving values from this object are local calls as well. This overall reduction in remote calls greatly increases the performance of your application.</p>
<p>Here is an example which comes from the example below. It uses Value objects and the MapServerPort to query the count of features in a layer in the map. Using the server API every method call, from creating the envelope to the query feature count call would be a remote method call.</p>
<p>// The envelope is a value object so this constructor is not a remote call<br />
<code>EnvelopeN</code> <code>env</code> = new <code>EnvelopeN</code>(<code>webExtent</code>.<code>getMinX</code>(), <code>webExtent</code>.<code>getMinY</code>(), <code>webExtent</code>.<code>getMaxX</code>(), <code>webExtent</code>.<code>getMaxY</code>(),<br />
null, null, null, null, null);<br />
// make a spatialfilter value object with the required parameters &#8211; none of these method calls are remote<code> </code><br />
<code>SpatialFilter</code> <code>spatialFilter</code> = new <code>SpatialFilter</code>();<br />
<code>spatialFilter</code>.<code>setFilterGeometry</code>(<code>env</code>);<br />
<code>spatialFilter</code>.<code>setSpatialRel</code>(<code>EsriSpatialRelEnum</code>.<code>esriSpatialRelIntersects</code>);<br />
<code>spatialFilter</code>.<code>setWhereClause</code>(&#8220;&#8221;);<br />
<code>spatialFilter</code>.<code>setSearchOrder</code>(<code>EsriSearchOrder</code>.<code>esriSearchOrderSpatial</code>);<br />
<code>spatialFilter</code>.<code>setSpatialRelDescription</code>(&#8220;&#8221;);<br />
<code>spatialFilter</code>.<code>setGeometryFieldName</code>(&#8220;&#8221;);</p>
<p>int <code>layerId</code> = <code>layer</code>.<code>getId</code>();<br />
//because queryFeatureCount is found on the MapServerPort the call to queryFeatureCount goes back<br />
//to the server which can throw an RemoteException<br />
try {<br />
<code>numberOfFeatures</code> =  <code>mapServer</code>.<code>queryFeatureCount</code>(<code>mapServer</code>.<code>getDefaultMapName</code>(), <code>layerId</code>, <code>spatialFilter</code>);<br />
} catch (RemoteException <code>e</code>){}<code> </code></p>
<p>There are also some drawbacks, especially for current ArcGIS Server programmers. Because of the requirements of the WSDL using simple types and the way different toolkits generate default values, some of the generated objects need more properties set before the methods will work. For example, using an Element for custom graphics needs to have its color set when using SOAP but not using the Server API. The implications of this for current ArcGIS Server developers is that your code will not translate directly and that you may have to set more values before the method call.</p>
<p>Now that you have basic understanding of the ArcGIS Server web services, you can go on to reading about how these generated Java proxies are used in the Web ADF and the Enterprise ADF. The Javadoc for the generated Java proxies can be found by themselves or as part of the Javadoc for the Web ADF and the Enterprise ADF</p>
<p>The custom command and tool example shows using the Value objects and Port calls.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/139-the-basics-of-working-with-web-services.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit Into A SOAP Envelope</title>
		<link>http://www.soapbuilders.org/136-edit-into-a-soap-envelope.html</link>
		<comments>http://www.soapbuilders.org/136-edit-into-a-soap-envelope.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 08:05:37 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=136</guid>
		<description><![CDATA[An application that depends largely on the work of the SOAP web service asp.net much in the simulator and then hit with a shock that CoreServices library function that does not contain all web services available on the iPhone. I keep hoping that this feature was recently added. All my &#8230;<p><a href="http://www.soapbuilders.org/136-edit-into-a-soap-envelope.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>An application that depends largely on the work of the SOAP web service asp.net much in the simulator and then hit with a shock that CoreServices library function that does not contain all web services available on the iPhone. I keep hoping that this feature was recently added.</p>
<p>All my code depends on receiving the object NSArray and NSDictionary key, and do not want to edit into a SOAP envelope to create the missing features emulate approval of the request is REST. I can only method used to make web service call and the same code base. I thought I share to all in this together.</p>
<p>Fortunately asp.net and is compatible with the REST style requests (I am not aware of this earlier today), so no changes are needed in the web server.</p>
<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/SOAP-header-02.png"><img class="alignright size-medium wp-image-137" title="SOAP-header-02" src="http://soapbuilders.org/wp-content/uploads/2011/07/SOAP-header-02-300x222.png" alt="" width="300" height="222" /></a></p>
<p>To demonstrate here the call to a simple method called &#8220;SayHello&#8221;. You pass in name and it returns a single item called &#8220;string&#8221; that contains &#8220;Hello [yourname]&#8220;. The code will work with more complex objects with child properties as well, and return them as NSDictionary and NSArray objects, but for simplicity I&#8217;m using &#8220;SayHello&#8221;.</p>
<p>Code :</p>
<div>
<pre>NSArray *keys = [NSArray arrayWithObjects:@"userName", nil];</pre>
<pre>NSArray *objects = [NSArray arrayWithObjects:@"jeremy", nil];</pre>
<pre>NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys];</pre>
<pre>NSDictionary *wsResponse=[WebServices callRestService:@"SayHello" :params];</pre>
<pre></pre>
<pre>NSString *responseString=[wsResponse objectForKey:@"string"];</pre>
</div>
<p>&nbsp;</p>
<p>callRestService is a helper method I created in a class called Webservices. This code was exactly the same before except the helper method was called callSoapService.</p>
<p>WebServices.m contains two methods. getRestUrl just appends all the method parameters into a url to make the REST request. callRestService uses the build-in NSXMLParser class to retrieve the xml and sends it to a custom class called XmlParser to handle the callbacks and create the NSDictionary result,</p>
<p><strong>WebServices.m</strong></p>
<p>Code:</p>
<div>
<pre>+(id)callRestService: (NSString *) methodName : (NSDictionary *) params</pre>
<pre>{</pre>
<pre>        NSURL *url=[WebServices getRestUrl: methodName : params];</pre>
<pre>        XmlParser *xmlParser = [[XmlParser alloc] init];</pre>
<pre></pre>
<pre>        NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];</pre>
<pre>        [parser setDelegate:xmlParser];</pre>
<pre>        [parser setShouldProcessNamespaces:NO];</pre>
<pre>        [parser setShouldReportNamespacePrefixes:NO];</pre>
<pre>        [parser setShouldResolveExternalEntities:NO];</pre>
<pre>        [parser parse];</pre>
<pre>        [parser release];</pre>
<pre>        return xmlParser.result;</pre>
<pre>}</pre>
<pre></pre>
<pre>+(NSURL *)getRestUrl: (NSString *) methodName : (NSDictionary *) params</pre>
<pre>{</pre>
<pre>        NSString *url=@"http://services.mywebsite.com/mywebservice.asmx/";</pre>
<pre>        url=[url stringByAppendingString:methodName];</pre>
<pre></pre>
<pre>        BOOL firstKey=TRUE;</pre>
<pre>        for (NSString *key in params)</pre>
<pre>        {</pre>
<pre>               NSString *value=[params objectForKey:key];</pre>
<pre>               if (firstKey) url=[url stringByAppendingString:@"?"]; else url=[url stringByAppendingString:@"&amp;"];</pre>
<pre>               url=[url stringByAppendingString:key];</pre>
<pre>               url=[url stringByAppendingString:@"="];</pre>
<pre>               url=[url stringByAppendingString:value];</pre>
<pre>               firstKey=FALSE;</pre>
<pre>        }</pre>
<pre>        return [NSURL URLWithString:url];</pre>
<pre>}</pre>
</div>
<p>&nbsp;</p>
<p>The final step is to create the XmlParser handler. This class keeps track of each open and close tag to build an object tree containing NSMutableArray NSMutableDictionary and NSString objects.</p>
<p><strong>XmlParser.h</strong></p>
<p>Code:</p>
<p>&nbsp;</p>
<div>
<pre>#import &lt;Foundation/Foundation.h&gt;</pre>
<pre></pre>
<pre></pre>
<pre>@interface XmlParser : NSObject {</pre>
<pre>        NSMutableDictionary *result;</pre>
<pre>        NSString *currentElementName;</pre>
<pre>        NSString *currentElementValue;</pre>
<pre>        NSMutableArray *parentArray;</pre>
<pre>}</pre>
<pre></pre>
<pre>@property (nonatomic, retain) NSMutableDictionary *result;</pre>
<pre>@property (nonatomic, retain) NSString *currentElementName;</pre>
<pre>@property (nonatomic, retain) NSString *currentElementValue;</pre>
<pre>@property (nonatomic, retain) NSMutableArray *parentArray;</pre>
<pre></pre>
<pre></pre>
<pre>- (void)parserDidStartDocument:(NSXMLParser *)parser;</pre>
<pre>- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;</pre>
<pre>- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;</pre>
<pre>- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;</pre>
<pre></pre>
<pre>@end</pre>
</div>
<p><strong> </strong></p>
<p><strong>XmlParser.m</strong></p>
<p>Code:</p>
<div>
<pre>#import "XmlParser.h"</pre>
<pre></pre>
<pre></pre>
<pre>@implementation XmlParser</pre>
<pre>@synthesize result;</pre>
<pre>@synthesize currentElementName;</pre>
<pre>@synthesize currentElementValue;</pre>
<pre>@synthesize parentArray;</pre>
<pre></pre>
<pre></pre>
<pre>- (void)parserDidStartDocument:(NSXMLParser *)parser</pre>
<pre>{</pre>
<pre>        result=[[NSMutableDictionary alloc] init];</pre>
<pre>        parentArray=[[NSMutableArray alloc] init];</pre>
<pre>        [parentArray addObject:result];</pre>
<pre>        currentElementName=@"";</pre>
<pre>}</pre>
<pre></pre>
<pre>- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict</pre>
<pre>{</pre>
<pre>        if (qName) {</pre>
<pre>               elementName = qName;</pre>
<pre>        }</pre>
<pre>        currentElementValue=@"";</pre>
<pre>        if (currentElementName!=@"")</pre>
<pre>        {</pre>
<pre>               id newParent=NULL;</pre>
<pre>               if ([currentElementName isLike:@"*Array*"])</pre>
<pre>               {</pre>
<pre>                       newParent=[[NSMutableArray alloc] init];</pre>
<pre>               } else {</pre>
<pre>                       newParent=[[NSMutableDictionary alloc] init];</pre>
<pre>               }</pre>
<pre>               [parentArray addObject:newParent];</pre>
<pre>        }</pre>
<pre>        currentElementName=elementName;</pre>
<pre>}</pre>
<pre></pre>
<pre>- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName</pre>
<pre>{</pre>
<pre>        if (qName) {</pre>
<pre>               elementName = qName;</pre>
<pre>        }</pre>
<pre></pre>
<pre>        if (currentElementName==@"")</pre>
<pre>        {</pre>
<pre>               //We're adding a container with children.  Add it to the parent and remove this item fromt he parentArray</pre>
<pre>               int currentIndex=[parentArray count]-1;</pre>
<pre>               int parentIndex=currentIndex - 1;</pre>
<pre>               id currentChild=[parentArray objectAtIndex:currentIndex];</pre>
<pre>               id currentParent=[parentArray objectAtIndex:parentIndex];</pre>
<pre></pre>
<pre>               if ([currentParent isKindOfClass:[NSMutableArray class]])</pre>
<pre>               {</pre>
<pre>                       [currentParent addObject:currentChild];</pre>
<pre>               } else {</pre>
<pre>                       [currentParent setObject:currentChild forKey:elementName];</pre>
<pre>               }</pre>
<pre></pre>
<pre>               [parentArray removeObjectAtIndex:currentIndex];</pre>
<pre>        } else {</pre>
<pre>               //We're adding a simple type element</pre>
<pre>               int currentIndex=[parentArray count]-1;</pre>
<pre>               id currentParent=[parentArray objectAtIndex:currentIndex];</pre>
<pre>               if ([currentParent isKindOfClass:[NSMutableArray class]])</pre>
<pre>               {</pre>
<pre>                       [currentParent addObject:currentElementValue];</pre>
<pre>               } else {</pre>
<pre>                       [currentParent setObject:currentElementValue forKey:currentElementName];</pre>
<pre>               }</pre>
<pre>        }</pre>
<pre>        currentElementName=@"";</pre>
<pre>}</pre>
<pre></pre>
<pre></pre>
<pre>- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string</pre>
<pre>{</pre>
<pre>        currentElementValue=string;</pre>
<pre>}</pre>
<pre></pre>
<pre>@end</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>That&#8217;s it. I&#8217;m sure it&#8217;s not the cleanest code (This is my very first XCode app) and there may be a better way of doing this, but it saved me from having to rewrite all my code that was retrieving data from SOAP services. I&#8217;ve seen tons of other people with the same problem and no solutions so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/136-edit-into-a-soap-envelope.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion MX (CFMX) Is Easy Using Web Services</title>
		<link>http://www.soapbuilders.org/133-coldfusion-mx-cfmx-is-easy-using-web-services.html</link>
		<comments>http://www.soapbuilders.org/133-coldfusion-mx-cfmx-is-easy-using-web-services.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 08:01:10 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=133</guid>
		<description><![CDATA[One of the main advantages of ColdFusion MX (CFMX) is easy you can build applications using web services. Why advertise web services and real applications creep down, ease of use make the CFMX development of attractive options. Here I will show how CFMX makes it easy to call a web &#8230;<p><a href="http://www.soapbuilders.org/133-coldfusion-mx-cfmx-is-easy-using-web-services.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>One of the main advantages of ColdFusion MX (CFMX) is easy you can build applications using web services.<br />
Why advertise web services and real applications creep down, ease of use make the CFMX development of attractive options. Here  I will show how CFMX makes it easy to call a web service, which shows  how to query and return data from the interface is web services  Amazon.com &#8216;s have been introduced recently.</p>
<p>&nbsp;</p>
<p>Before  you start, you need to go to Amazon Web Services site, download the  development kit and chip development (ie, identity card number) to get. Sending  this signal depends on the Amazon Web Services, and is a way to Amazon  on their sites as partners in identifying and paying referral sales. Remove the sample is free, and by the members, if required. For example, all you need is the key to development.</p>
<p>&nbsp;</p>
<p>Do a keyword<br />
To begin, I would like to check Amazon.com to several search terms and display results. Developer&#8217;s Kit Documentation is a section that explains the format of the study and explain the structure of the response. There are two things to consider here.</p>
<p>First, the document states that the method keyword requests a search, there are several values ??that must be provided. These are: keyword, page, fashion, label, type, class and devtag. About the variable reported in the literature. At  first glance you may think will be the Amazon Web service to call and  pass arguments to each of the values, such as the code in Listing A.</p>
<p>But that&#8217;s not how it works. It  takes &#8220;a little digging around and trying, but finally found a  solution: Amazon want you to have a single variable, the keyword query  the values ??of a table or structure so that the correct approach would  be the first to build. Structural investigations and occupied by order  of the Amazon as an argument. B contains a list of job codes that describe how the Amazon to find a list of all products as &#8220;hell&#8221; key words.</p>
<p>You can see that my application search parameters required type of investigation, the set consists of the dispute. Amazon said it will seek the light (not heavy) research, basic information about the product, and therefore faster.</p>
<p>After your application is successful format, which offers various products for research, relevant research in Listing B. Each array element contains information about this product, and shows users how to very easily, as shown in C. Register</p>
<p>You can get information on products such as return the application and documentation are described correctly. In  the above example, the loop at the output range of products and a small  image (getImageUrlSmall) product name (getProductName), artists  (getArtist), and finally price (getListPrice).</p>
<p>You can also see that my name links to the item&#8217;s product information. Data  for each object Amazon.com link to the article Amazon page for more  information on its website, so you can only use this link. But  you may not want to distribute Amazon customers first, maybe I want to  stay on the website &#8220;I am a little more. To do this, a detailed  half-page issue.<br />
Amazon Web Services API also supports application ASIN ago, a unique identifier for each product Amazon sells. Through  a series of information and specifications ASIN ASIN pages from data  such as Amazon, as shown in Listing D, I request access to information  about this product. You can ask to see the kind of  research is defined here, too heavy, which means that we will return  information about the products that I make my first application, which  was created to fight.</p>
<p>&nbsp;</p>
<p>Code in Listing D is the same, previously known as Web services. But this time I was on the first page of the ASIN change the URL. As  can be seen from the inlet and outlet is the same as before (code B),  but this time, because choosing different weight to the results, I have  more information about the product in the workplace.</p>
<p>&nbsp;</p>
<p>For  example, data capture and display the page larger product image, sales  network and a few comments, not the details of an application to fight  again. API documentation describes all types of data access, the most interesting. You can call the same product, UPC, publisher, age, and the track list.</p>
<p>&nbsp;</p>
<p>Amazon products are available through the API, including DVDs, software and books. Amazon also offers a way to allow people to add items to your shopping wish list for Amazon, and buy stuff. So if an affiliate, you can actually make money on your website.</p>
<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/289115_large.jpg"><img class="alignright size-medium wp-image-134" title="289115_large" src="http://soapbuilders.org/wp-content/uploads/2011/07/289115_large-218x300.jpg" alt="" width="218" height="300" /></a>Request  additional information to consider is looking for writers and special  features such as search and tag to your list of Amazon. Code to call the third party web service similar to the example I gave above. Just check the documentation to determine what needs to be special needs of data and format the results will be returned.</p>
<p>We began to reveal the most useful web services, and acceleration. I hope this example shows how easy it is to use ColdFusion MX to use Amazon Web Services. When  it comes to Web services allow developers to facilitate the ColdFusion  CFMX benefit greatly from a standard of attractiveness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/133-coldfusion-mx-cfmx-is-easy-using-web-services.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rest Of The Way The Web Interface Main Services</title>
		<link>http://www.soapbuilders.org/130-rest-of-the-way-the-web-interface-main-services.html</link>
		<comments>http://www.soapbuilders.org/130-rest-of-the-way-the-web-interface-main-services.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:56:05 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=130</guid>
		<description><![CDATA[For two years, the publicity associated with the Simple Object Access Protocol (SOAP) does not apply to almost fade, although the increase based on his opponent. While some critics are tired of hearing, Web services, architects are few Internet argument surprisingly well to choose soap: The better way is to &#8230;<p><a href="http://www.soapbuilders.org/130-rest-of-the-way-the-web-interface-main-services.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/sql-azure2.jpg"><img class="alignleft size-medium wp-image-131" title="sql-azure2" src="http://soapbuilders.org/wp-content/uploads/2011/07/sql-azure2-300x190.jpg" alt="" width="300" height="190" /></a>For  two years, the publicity associated with the Simple Object Access  Protocol (SOAP) does not apply to almost fade, although the increase  based on his opponent. While some critics  are tired of hearing, Web services, architects are few Internet  argument surprisingly well to choose soap: The better way is to create a  slide show Web services that the state transfers (AN).</p>
<p>&nbsp;</p>
<p>The AN-old philosophy of the new technology. While  the soap seems to be the first phase of the development of the Internet  to launch with the new requirements of the philosophy of AN to support  the principles and protocols of existing facilities to create many web  strong. This means that developers can  understand HTTP and XML Web services to build to start immediately,  without the packaging than those normally used for the development of  Internet applications.</p>
<p>&nbsp;</p>
<p>Flexible Interface<br />
The rest of the way the Web interface main services, which are already known and widely used to write: URI. For  example, can reveal the price of the service, where users enter the  stock symbol on the stock market, real-time pricing to provide as simple  as writing on the Web server that the URI: http:// www. somebrokerage.com / quote? = Symbol QQQ.</p>
<p>&nbsp;</p>
<p>An application from any client or HTTP server to easily access services using HTTP GET support. Depending  on how the service provider to write the script, the result of the HTTP  response as simple as one of the many rules and the thread of the  current price of a particular symbol. Or it could be an XML document.</p>
<p>&nbsp;</p>
<p>Interface method has significant advantages over SOAP services. Any  developer can understand how the URI can create and edit their Web  access means soap, however, requires special skills that the new XML  specification, and most of the developers kit make a soap request and  explain the results.</p>
<p>&nbsp;</p>
<p>Light the bandwidth<br />
Another advantage of the calm surface, the questions and answers short. Asks SOAP XML wrapper around each application and respond. After  the column name and type declaration, the stock four or five numbers  and the SOAP response costs by more than 10 times the number of bytes  the same reaction to the so-called PART.<br />
Proponents argue that rigid soap essential element for distributed applications. In  practice, even if the two applications, one type of data and services  in advance of the data requests and responses for any reason whatsoever.</p>
<p>&nbsp;</p>
<p>How do I know the data types and their position in the first reaction? PART Like soap, is still the same document with the edges of the input and output parameters. The  good thing about AN the flexibility that developers can a WSDL file for  their benefits to make a statement if necessary write access. Otherwise,  the statement as a simple web page, people read to say: &#8220;Give this  service a number of entries in the form q = icon, which is the current  price per share of text chains.&#8221;</p>
<p>&nbsp;</p>
<p>Security Guard<br />
Perhaps the most interesting aspect of PART Vs. Soap in the security discussions. Although  the area, said an appeal sent by the remote procedure is standard HTTP  SOAP port is a good way to get your support for Web services in the  organization, the proponents believe that the practice of design does  not ensure the security network. PART  calls over HTTP or HTTPS went well, but the rest of the manager (or  firewall) to use for each message, the analysis of the HTTP request to  make a difference. For example, a GET request is always safe because it does not change, by definition, not details. And &#8220;can only retrieve the data.</p>
<p>&nbsp;</p>
<p>SOAP requests are normal, which in turn uses POST to communicate with the service provided. And  look at the SOAP envelope, a task that most of the resources and uses  firewall has no way of knowing if the application can retrieve only the  data, or using a database table.</p>
<p>&nbsp;</p>
<p>For authentication and authorization, SOAP provides the load in the hands of application developers. Methodology of the rest, but assume that the web server and is responsible for these tasks. The use of industry standards and common identity, such as LDAP servers, developers can do on the net for the hard work.<br />
This  helps the developers, not only, but also simplifies the task of  administrators may want to use something as simple as a Web ACL, both in  the same way as any other URI.</p>
<p>&nbsp;</p>
<p>Not all<br />
To be honest, not the best solution for all web services. The data must be protected so that there are no parameters and URI. And large amounts of data, such as purchase orders in detail, it can quickly be rotated beyond the boundaries of the URI. In this case, SOAP is a solid solution. Yet it is important to break and drive to take the soap, only when necessary. This allows for the development of applications that are easily accessible.</p>
<p>&nbsp;</p>
<p>Fortunately, the philosophy YOUR Web developers to get. The  latest version of the SOAP specification is currently certain services  are exposed via URIs (even if the SOAP response message). In addition, users of Microsoft. NET services can be published via the GET request. All this marks a change in thinking about how Web services interface.</p>
<p>&nbsp;</p>
<p>Developers understand that sending and receiving messages always express the best way to use SOAP. Sometimes the interface is not the answer simple text magic and save time and resources in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/130-rest-of-the-way-the-web-interface-main-services.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test The SOAP Messages</title>
		<link>http://www.soapbuilders.org/127-test-the-soap-messages.html</link>
		<comments>http://www.soapbuilders.org/127-test-the-soap-messages.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:47:07 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=127</guid>
		<description><![CDATA[A client needs to develop SOAP web services. I&#8217;m involved in web services interface specifications and comply with specifications. JMeter and finally using XPath statements. Should not depend on the test unit &#8220;green bar&#8221;, but it worked. The need is to test the SOAP messages that play on the network. &#8230;<p><a href="http://www.soapbuilders.org/127-test-the-soap-messages.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>A client needs to develop SOAP web services. I&#8217;m involved in web services interface specifications and comply with specifications. JMeter and finally using XPath statements. Should not depend on the test unit &#8220;green bar&#8221;, but it worked.</p>
<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/jmeter-soap-test-result.png"><img class="alignright size-full wp-image-128" title="jmeter-soap-test-result" src="http://soapbuilders.org/wp-content/uploads/2011/07/jmeter-soap-test-result.png" alt="" width="220" height="240" /></a><br />
The need is to test the SOAP messages that play on the network. At least one of the first customers to publish applications SOAP requests and responses from the XML SOAP service, instead of using SOAP kit. We need to ensure that the Web service interface to behave as expected, and the business logic behind the interface changes have no impact on the customer&#8217;s application.</p>
<p>&nbsp;</p>
<p>Before the actual test in JMeter Google quickly reveals what is suitable for quick and dirty test. Tests can be written with JUnit and unity, but the solution may be in the client&#8217;s declaration that the e-mail is preferred. JMeter has a job, but has some problems.</p>
<p>&nbsp;</p>
<h3>The Recipe</h3>
<ol>
<li>Download      and install JMeter. (Activation.jar and mail.jar are required for SOAP testing. See installation notes.)</li>
<li>Create a      new Test Plan.</li>
<li>Add a      Thread Group to the Test Plan. Check that the number of threads is set to      1 and the number of loops is 1.</li>
<li>For each      test, add a Web Service (SOAP) Request samplers as      a child of the Thread Group. Name them with a numeric identitifier for      ease of reference. e.g. “1. Invalid Foo, Valid Bar”. You will need to      supply the URL to the WSDL      file and a fully formed SOAP request XML document.</li>
<li>For each      sampler, add as many XPath Assertions as you need to validate the result.      XPath expressions can be used to check pretty much everything about the      content and structure of XML documents.</li>
<li>Add a View      Results Tree listener to capture and display the requests and responses.      Any tests that fail will be shown in red.</li>
<li>Save your      Test Plan.</li>
<li>Run it.</li>
<li>View      results by clicking on the View Results Tree.</li>
<li>Clear      results before running the test again. Results are stored cumulatively,      not replaced by each test.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/127-test-the-soap-messages.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interpreting The SOAP Client</title>
		<link>http://www.soapbuilders.org/124-interpreting-the-soap-client.html</link>
		<comments>http://www.soapbuilders.org/124-interpreting-the-soap-client.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:41:58 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=124</guid>
		<description><![CDATA[XMLSpy ® 2011 includes a full SOAP capabilities, including interpreting the SOAP client to WSDL (Web Services Description Language) documents to create SOAP requests, please send them to the web service and displays the SOAP response. It also contains powerful SOAP debugger. In addition to SOAP 1.1, XMLSpy supports the &#8230;<p><a href="http://www.soapbuilders.org/124-interpreting-the-soap-client.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>XMLSpy ® 2011 includes a full SOAP capabilities, including interpreting the SOAP client to WSDL (Web Services Description Language) documents to create SOAP requests, please send them to the web service and displays the SOAP response. It also contains powerful SOAP debugger.<br />
In addition to SOAP 1.1, XMLSpy supports the latest version of the standard, 1.2, allows you to create and test Web services messages using the SOAP 1.2 and SOAP 1.1. According to the W3C, the benefits of the larger operational version 1.2, a better integration of the network increase, the flexibility and speed. XMLSpy now supports both SOAP 1.1 and 1.2, you can choose which version you want to embed applications in your Web service.<br />
SOAP debugger<a href="http://soapbuilders.org/wp-content/uploads/2011/07/34.gif"><img class="alignright size-medium wp-image-125" title="34" src="http://soapbuilders.org/wp-content/uploads/2011/07/34-300x207.gif" alt="" width="300" height="207" /></a><br />
XMLSpy SOAP debugger works as a proxy between client and server web services web services, so that the WSDL 1.1/2.0, single step through Web Services transactions sent over HTTP or HTTPS inspection, review of each request and response XML document, set breakpoints feature (SOAP request or response), and even define conditional breakpoints that are triggered when a specific request or response, the selected data can be specified by an XPath query.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/124-interpreting-the-soap-client.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOAP Is A Protocol</title>
		<link>http://www.soapbuilders.org/121-soap-is-a-protocol.html</link>
		<comments>http://www.soapbuilders.org/121-soap-is-a-protocol.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:40:19 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=121</guid>
		<description><![CDATA[SOAP is a protocol for communication about the importance of the Internet, because most of the fact that it has become natural for a great development platform. SOAP is a protocol has also been very stable. WS-* War of the early years of the new millennium seems to die, and &#8230;<p><a href="http://www.soapbuilders.org/121-soap-is-a-protocol.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>SOAP  is a protocol for communication about the importance of the Internet,  because most of the fact that it has become natural for a great  development platform. SOAP is a protocol has also been very stable. WS-*  War of the early years of the new millennium seems to die, and some  very useful extensions to SOAP has been selected by the market.<br />
<a href="http://soapbuilders.org/wp-content/uploads/2011/07/kmess2-soaperror.png"><img class="alignleft size-medium wp-image-122" title="kmess2-soaperror" src="http://soapbuilders.org/wp-content/uploads/2011/07/kmess2-soaperror-300x289.png" alt="" width="300" height="289" /></a>Soap Many tools are also stabilized by the protocol. Inadequate compared with other SOAP good game. Unlike other tools are still very easy to use for most applications. But  as more people and more literal document as a method of broadcast  encryption option, the roots of prejudice and SOAP RPC started to show,  and the kit is not possible:: Lite with XML.<br />
As a result of the SOAP:: Lite has some compatibility issues with more modern servers, and clients are known. Responsible for SOAP:: Lite is now difficult. Sources note the signs of a complicated, serious intelligent Kulchenko Paul creates the SOAP: Lite. Result, the harassment experienced Perl programmer, and that makes many of them are done in the fear of the court. I  am the highest recognition given to my office to join the module to the  fact that &#8211; I work with some bright programmers with experience in Perl  and everyone looks the SOAP:: Lite. And not as an impression of &#8220;good&#8221; surprise that people are healthy, but fear.<br />
But I&#8217;m not trying to inflate my ego, I tried the stage for what should only be established in addition to SOAP Perl kit.<br />
If  SOAP:: Lite as an exciting project, the authors will be processed, it  is essential that SOAP:: Lite to manage your code base much easier. SOAP::  Lite can be written to benefit large sectors of the house a lot of code  before the record is very mature, before the era of WS-I, when the  toolkit and other servers have been agreed and adopted a set of best  practices. It should also be given the option to XML: RPC protocol is completely different under an entirely different set of conditions. SOAP:: Lite should switch to a model based on documents, instead of being pushed into a People&#8217;s Republic of China.<br />
Therefore, SOAP:: Lite-writing. SOAP:: Lite must live &#8220;Lite&#8221; in its name. SOAP:: Lite should be built from scratch to meet the WS-I. Initially be built around the bad WSDL parser and engine. There should be more modular, so components can be easier to implement new and improved, no change for users and developers. You  should take advantage of some Perl modules that have developed SOAP::  Lite are designed to reduce code complexity and ambiguity.<br />
SOAP:: Lite needs your help. SOAP::  Lite needs a group of 2-3 people want to see the cooling kit is  essential for developers of Perl and welcome a new era of recycling,  communities, small businesses, the use and usefulness.<br />
Running a project like this is not a trivial task. Which took many months of time and attention. And then they should be encouraged and nurtured.<br />
The project is not from the beginning. This is the vision and the various codes that have been tested in SOAP:: Lite does not need to waste disposal. What we do is try, SOAP:: Lite easier to handle and easier to grok. What we hope to create a new module, called SOAP: Simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/121-soap-is-a-protocol.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SoapUI Is Useful Tool For Testing Web Services</title>
		<link>http://www.soapbuilders.org/117-soapui-is-useful-tool-for-testing-web-services.html</link>
		<comments>http://www.soapbuilders.org/117-soapui-is-useful-tool-for-testing-web-services.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:32:11 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=117</guid>
		<description><![CDATA[SoapUI is a useful tool for testing web services. Not only makes it possible to test deployed web services, but it also offers the possibility to mock any &#8220;external&#8221; service needed by the service you want to test. As a result, you can test your web service independently from any &#8230;<p><a href="http://www.soapbuilders.org/117-soapui-is-useful-tool-for-testing-web-services.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>SoapUI is a useful tool for testing web services. Not only makes it possible to test deployed web services, but it also offers the possibility to mock any &#8220;external&#8221; service needed by the service you want to test. As a result, you can test your web service independently from any other external service.<a href="http://soapbuilders.org/wp-content/uploads/2011/07/000e2b80_medium.png"><img class="alignright size-medium wp-image-118" title="000e2b80_medium" src="http://soapbuilders.org/wp-content/uploads/2011/07/000e2b80_medium-300x99.png" alt="" width="300" height="99" /></a></p>
<p>The following basic example describes how to test a service that computes the price of a trip (TripPriceService). It invokes one service that returns prices for hotel rooms (HotelPriceService) and one service that returns prices for flights (FlightPriceService).</p>
<p>Formula : price = duration * rooms * getRoomPrice() + adults * getFlightPrice(from, to)</p>
<p>Here are the WSDLs of the three services.</p>
<p>&nbsp;</p>
<p>TripPriceService.wsdl</p>
<pre>&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;wsdl:definitions name="TripPriceServiceFacadeService"</pre>
<pre>  targetNamespace="http://trip.price.service" xmlns:ns1="http://cxf.apache.org/bindings/xformat"</pre>
<pre>  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://trip.price.service" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"</pre>
<pre>  xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>  &lt;wsdl:types&gt;</pre>
<pre>    &lt;xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"</pre>
<pre>      targetNamespace="http://trip.price.service" xmlns:tns="http://trip.price.service" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>      &lt;xs:element name="getTripPrice" type="tns:getTripPrice" /&gt;</pre>
<pre>      &lt;xs:element name="getTripPriceResponse" type="tns:getTripPriceResponse" /&gt;</pre>
<pre>      &lt;xs:complexType name="getTripPrice"&gt;</pre>
<pre>       &lt;xs:sequence&gt;</pre>
<pre>         &lt;xs:element minOccurs="0" name="trip" type="tns:trip" /&gt;</pre>
<pre>       &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:complexType name="trip"&gt;</pre>
<pre>        &lt;xs:sequence&gt;</pre>
<pre>          &lt;xs:element name="adults" type="xs:int" /&gt;</pre>
<pre>          &lt;xs:element name="duration" type="xs:int" /&gt;</pre>
<pre>          &lt;xs:element minOccurs="0" name="from" type="xs:string" /&gt;</pre>
<pre>          &lt;xs:element name="rooms" type="xs:int" /&gt;</pre>
<pre>          &lt;xs:element minOccurs="0" name="to" type="xs:string" /&gt;</pre>
<pre>        &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:complexType name="getTripPriceResponse"&gt;</pre>
<pre>        &lt;xs:sequence&gt;</pre>
<pre>          &lt;xs:element name="return" type="xs:float" /&gt;</pre>
<pre>        &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:element name="TripPriceServiceException" type="tns:TripPriceServiceException" /&gt;</pre>
<pre>      &lt;xs:complexType name="TripPriceServiceException"&gt;</pre>
<pre>        &lt;xs:sequence /&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>    &lt;/xs:schema&gt;</pre>
<pre>  &lt;/wsdl:types&gt;</pre>
<pre>  &lt;wsdl:message name="TripPriceServiceException"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:TripPriceServiceException" name="TripPriceServiceException"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:message name="getTripPrice"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getTripPrice" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:message name="getTripPriceResponse"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getTripPriceResponse" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:portType name="ITripPriceServiceFacade"&gt;</pre>
<pre>    &lt;wsdl:operation name="getTripPrice"&gt;</pre>
<pre>      &lt;wsdl:input message="tns:getTripPrice" name="getTripPrice"&gt;</pre>
<pre>    &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output message="tns:getTripPriceResponse" name="getTripPriceResponse"&gt;</pre>
<pre>    &lt;/wsdl:output&gt;</pre>
<pre>      &lt;wsdl:fault message="tns:TripPriceServiceException" name="TripPriceServiceException"&gt;</pre>
<pre>    &lt;/wsdl:fault&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:portType&gt;</pre>
<pre>  &lt;wsdl:binding name="TripPriceServiceFacadeServiceSoapBinding" type="tns:ITripPriceServiceFacade"&gt;</pre>
<pre>    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /&gt;</pre>
<pre>    &lt;wsdl:operation name="getTripPrice"&gt;</pre>
<pre>      &lt;soap:operation soapAction="" style="document" /&gt;</pre>
<pre>      &lt;wsdl:input name="getTripPrice"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output name="getTripPriceResponse"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:output&gt;</pre>
<pre>      &lt;wsdl:fault name="TripPriceServiceException"&gt;</pre>
<pre>        &lt;soap:fault name="TripPriceServiceException" use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:fault&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:binding&gt;</pre>
<pre>  &lt;wsdl:service name="TripPriceServiceFacadeService"&gt;</pre>
<pre>    &lt;wsdl:port binding="tns:TripPriceServiceFacadeServiceSoapBinding" name="TripPriceServiceFacadePort"&gt;</pre>
<pre>      &lt;soap:address location="http://localhost:8080/trip-price-0.0.1-SNAPSHOT/webservices/TripPriceService" /&gt;</pre>
<pre>    &lt;/wsdl:port&gt;</pre>
<pre>  &lt;/wsdl:service&gt;</pre>
<pre>&lt;/wsdl:definitions&gt;</pre>
<p>HotelPriceService.wsdl</p>
<pre>&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;wsdl:definitions name="HotelPriceServiceFacadeService"</pre>
<pre>  targetNamespace="http://external.services/hotel" xmlns:ns1="http://cxf.apache.org/bindings/xformat"</pre>
<pre>  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://external.services/hotel"</pre>
<pre>  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>  &lt;wsdl:types&gt;</pre>
<pre>    &lt;xs:schema elementFormDefault="unqualified" targetNamespace="http://external.services/hotel"</pre>
<pre>      version="1.0" xmlns:tns="http://external.services/hotel" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>      &lt;xs:element name="getRoomPrice" type="tns:getRoomPrice" /&gt;</pre>
<pre>      &lt;xs:element name="getRoomPriceResponse" type="tns:getRoomPriceResponse" /&gt;</pre>
<pre>      &lt;xs:complexType name="getRoomPrice"&gt;</pre>
<pre>        &lt;xs:sequence /&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:complexType name="getRoomPriceResponse"&gt;</pre>
<pre>        &lt;xs:sequence&gt;</pre>
<pre>          &lt;xs:element name="return" type="xs:float" /&gt;</pre>
<pre>        &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>    &lt;/xs:schema&gt;</pre>
<pre>  &lt;/wsdl:types&gt;</pre>
<pre>  &lt;wsdl:message name="getRoomPrice"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getRoomPrice" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:message name="getRoomPriceResponse"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getRoomPriceResponse" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:portType name="IHotelPriceServiceFacade"&gt;</pre>
<pre>    &lt;wsdl:operation name="getRoomPrice"&gt;</pre>
<pre>      &lt;wsdl:input message="tns:getRoomPrice" name="getRoomPrice"&gt;</pre>
<pre>    &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output message="tns:getRoomPriceResponse" name="getRoomPriceResponse"&gt;</pre>
<pre>    &lt;/wsdl:output&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:portType&gt;</pre>
<pre>  &lt;wsdl:binding name="HotelPriceServiceFacadeServiceSoapBinding" type="tns:IHotelPriceServiceFacade"&gt;</pre>
<pre>    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /&gt;</pre>
<pre>    &lt;wsdl:operation name="getRoomPrice"&gt;</pre>
<pre>      &lt;soap:operation soapAction="" style="document" /&gt;</pre>
<pre>      &lt;wsdl:input name="getRoomPrice"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output name="getRoomPriceResponse"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:output&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:binding&gt;</pre>
<pre>  &lt;wsdl:service name="HotelPriceServiceFacadeService"&gt;</pre>
<pre>    &lt;wsdl:port binding="tns:HotelPriceServiceFacadeServiceSoapBinding" name="HotelPriceServiceFacadePort"&gt;</pre>
<pre>      &lt;soap:address location="http://localhost:8088/external-services-0.0.1-SNAPSHOT/webservices/HotelPriceService" /&gt;</pre>
<pre>    &lt;/wsdl:port&gt;</pre>
<pre>  &lt;/wsdl:service&gt;</pre>
<pre>&lt;/wsdl:definitions&gt;</pre>
<p>FlightPriceService.wsdl</p>
<pre>&lt;?xml version='1.0' encoding='UTF-8'?&gt;</pre>
<pre>&lt;wsdl:definitions name="FlightPriceServiceFacadeService" targetNamespace="http://external.services/flight"</pre>
<pre>  xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"</pre>
<pre>  xmlns:tns="http://external.services/flight" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"</pre>
<pre>  xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>  &lt;wsdl:types&gt;</pre>
<pre>    &lt;xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"</pre>
<pre>      targetNamespace="http://external.services/flight" xmlns:tns="http://external.services/flight"</pre>
<pre>      xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;</pre>
<pre>      &lt;xs:element name="getFlightPrice" type="tns:getFlightPrice" /&gt;</pre>
<pre>      &lt;xs:element name="getFlightPriceResponse" type="tns:getFlightPriceResponse" /&gt;</pre>
<pre>      &lt;xs:complexType name="getFlightPrice"&gt;</pre>
<pre>        &lt;xs:sequence&gt;</pre>
<pre>          &lt;xs:element minOccurs="0" name="from" type="xs:string" /&gt;</pre>
<pre>          &lt;xs:element minOccurs="0" name="to" type="xs:string" /&gt;</pre>
<pre>        &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:complexType name="getFlightPriceResponse"&gt;</pre>
<pre>        &lt;xs:sequence&gt;</pre>
<pre>          &lt;xs:element name="return" type="xs:float" /&gt;</pre>
<pre>        &lt;/xs:sequence&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>      &lt;xs:element name="LocationNotFoundException" type="tns:LocationNotFoundException" /&gt;</pre>
<pre>      &lt;xs:complexType name="LocationNotFoundException"&gt;</pre>
<pre>        &lt;xs:sequence /&gt;</pre>
<pre>      &lt;/xs:complexType&gt;</pre>
<pre>    &lt;/xs:schema&gt;</pre>
<pre>  &lt;/wsdl:types&gt;</pre>
<pre>  &lt;wsdl:message name="LocationNotFoundException"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:LocationNotFoundException" name="LocationNotFoundException"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:message name="getFlightPrice"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getFlightPrice" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:message name="getFlightPriceResponse"&gt;</pre>
<pre>    &lt;wsdl:part element="tns:getFlightPriceResponse" name="parameters"&gt;</pre>
<pre>    &lt;/wsdl:part&gt;</pre>
<pre>  &lt;/wsdl:message&gt;</pre>
<pre>  &lt;wsdl:portType name="IFlightPriceServiceFacade"&gt;</pre>
<pre>    &lt;wsdl:operation name="getFlightPrice"&gt;</pre>
<pre>      &lt;wsdl:input message="tns:getFlightPrice" name="getFlightPrice"&gt;</pre>
<pre>    &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output message="tns:getFlightPriceResponse" name="getFlightPriceResponse"&gt;</pre>
<pre>    &lt;/wsdl:output&gt;</pre>
<pre>      &lt;wsdl:fault message="tns:LocationNotFoundException" name="LocationNotFoundException"&gt;</pre>
<pre>    &lt;/wsdl:fault&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:portType&gt;</pre>
<pre>  &lt;wsdl:binding name="FlightPriceServiceFacadeServiceSoapBinding" type="tns:IFlightPriceServiceFacade"&gt;</pre>
<pre>    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /&gt;</pre>
<pre>    &lt;wsdl:operation name="getFlightPrice"&gt;</pre>
<pre>      &lt;soap:operation soapAction="" style="document" /&gt;</pre>
<pre>      &lt;wsdl:input name="getFlightPrice"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:input&gt;</pre>
<pre>      &lt;wsdl:output name="getFlightPriceResponse"&gt;</pre>
<pre>        &lt;soap:body use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:output&gt;</pre>
<pre>      &lt;wsdl:fault name="LocationNotFoundException"&gt;</pre>
<pre>        &lt;soap:fault name="LocationNotFoundException" use="literal" /&gt;</pre>
<pre>      &lt;/wsdl:fault&gt;</pre>
<pre>    &lt;/wsdl:operation&gt;</pre>
<pre>  &lt;/wsdl:binding&gt;</pre>
<pre>  &lt;wsdl:service name="FlightPriceServiceFacadeService"&gt;</pre>
<pre>    &lt;wsdl:port binding="tns:FlightPriceServiceFacadeServiceSoapBinding" name="FlightPriceServiceFacadePort"&gt;</pre>
<pre>      &lt;soap:address location="http://localhost:8088/external-services-0.0.1-SNAPSHOT/webservices/FlightPriceService" /&gt;</pre>
<pre>    &lt;/wsdl:port&gt;</pre>
<pre>  &lt;/wsdl:service&gt;</pre>
<pre>&lt;/wsdl:definitions&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/117-soapui-is-useful-tool-for-testing-web-services.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOAP Request For Basic Report Using The Omniture</title>
		<link>http://www.soapbuilders.org/114-soap-request-for-basic-report-using-the-omniture.html</link>
		<comments>http://www.soapbuilders.org/114-soap-request-for-basic-report-using-the-omniture.html#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:29:21 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SOAP Tips]]></category>

		<guid isPermaLink="false">http://soapbuilders.org/?p=114</guid>
		<description><![CDATA[A large deficit in the lack of SDK from the framework SDK OSX WebServicesCore services Web. Because the focus under the terms of the relationship line, at least surprising that any SOAP web services stack frame house. So what is the developer? You must register themselves. Although the use of &#8230;<p><a href="http://www.soapbuilders.org/114-soap-request-for-basic-report-using-the-omniture.html" class="more-link"><span>Continue Reading &#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>A large deficit in the lack of SDK from the framework SDK OSX WebServicesCore services Web. Because the focus under the terms of the relationship line, at least surprising that any SOAP web services stack frame house. So what is the developer? You must register themselves.</p>
<p><a href="http://soapbuilders.org/wp-content/uploads/2011/07/Screen-shot-2010-11-22-at-8.27.20-PM.png"><img class="alignright size-medium wp-image-115" title="Screen shot 2010-11-22 at 8.27.20 PM" src="http://soapbuilders.org/wp-content/uploads/2011/07/Screen-shot-2010-11-22-at-8.27.20-PM-300x135.png" alt="" width="300" height="135" /></a><br />
Although the use of more convenient and better than the frames of all, no SOAP interaction with it is not difficult, but it seems the implementation of useful web services: Data Published endpoint via HTTP to a specific URL and removal of applications operating in what is natural.</p>
<p>Here’s a SOAP request for a basic report — an overtime trend of one metric — using the Omniture Web Services API:</p>
<p>&lt;soapenv:Envelope&gt;</p>
<p>&lt;soapenv:Header&gt;</p>
<p>&lt;wsse:Security&gt;</p>
<p>&lt;wsse:UsernameToken&gt;</p>
<p>&lt;wsse:Username&gt;$(ApiUsername)&lt;/wsse:Username&gt;</p>
<p>&lt;wsse:Password&gt;$(OneTimeEncryptedPassword)&lt;/wsse:Password&gt;</p>
<p>&lt;wsse:Nonce&gt;$(OneTimeNonce)&lt;/wsse:Nonce&gt;</p>
<p>&lt;wsu:Created&gt;2009-01-09T18:53:56.545Z&lt;/wsu:Created&gt;</p>
<p>&lt;/wsse:UsernameToken&gt;</p>
<p>&lt;/wsse:Security&gt;</p>
<p>&lt;/soapenv:Header&gt;</p>
<p>&lt;soapenv:Body&gt;</p>
<p>&lt;omn:Report.QueueOvertime&gt;</p>
<p>&lt;reportDescription xsi:type=“omn:reportDescription”&gt;</p>
<p>&lt;reportSuiteID xsi:type=“xsd:string”&gt;$(ReportSuiteId)&lt;/reportSuiteID&gt;</p>
<p>&lt;date xsi:type=“xsd:string”&gt;2008-11&lt;/date&gt;</p>
<p>&lt;dateGranularity&gt;day&lt;/dateGranularity&gt;</p>
<p>&lt;metrics soapenc:arrayType=“omn:reportDefinitionMetric[]” xsi:type=“soapenc:Array”&gt;</p>
<p>&lt;item&gt;</p>
<p>&lt;id&gt;pageviews&lt;/id&gt;</p>
<p>&lt;/item&gt;</p>
<p>&lt;/metrics&gt;</p>
<p>&lt;/reportDescription&gt;</p>
<p>&lt;/omn:Report.QueueOvertime&gt;</p>
<p>&lt;/soapenv:Body&gt;</p>
<p>&lt;/soapenv:Envelope&gt;</p>
<p>This chunk of XML is POSTed to our SOAP endpoint, <a href="https://api.omniture.com/admin/1.2/">https://api.omniture.com/admin/1.2/</a>. The response returned looks something like the following:</p>
<p>&lt;?xml version=“1.0” encoding=“UTF-8”?&gt;</p>
<p>&lt;SOAP-ENV:Envelope&gt;</p>
<p>&lt;SOAP-ENV:Body&gt;</p>
<p>&lt;ns1:&lt;eport.queueovertimeresponse&gt;&lt;/eport.queueovertimeresponse</p>
<p>&lt;return xsi:type=”tns:reportQueueResponse”&gt;</p>
<p>&lt;status xsi:type=“xsd:string”&gt;queued&lt;/status&gt;</p>
<p>&lt;statusMsg xsi:type=“xsd:string”&gt;Your report has been queued&lt;/statusMsg&gt;</p>
<p>&lt;reportID xsi:type=“xsd:int”&gt;1313624&lt;/reportID&gt;</p>
<p>&lt;/return&gt;</p>
<p>&lt;/ns1:Report.QueueOvertimeResponse&gt;</p>
<p>&lt;/SOAP-ENV:Body&gt;</p>
<p>&lt;/SOAP-ENV:Envelope&gt;</p>
<p>&nbsp;</p>
<h2>Creating and Parsing a SOAP request on the iPhone</h2>
<p>To get this request to work in an iPhone application, we need to do the following:</p>
<ol>
<li>Create the      SOAP header, complete with valid authentication credentials
<ol>
<li>Encrypt       your Omniture api username and secret.</li>
<li>Use       <strong>[NSString       stringWithFormat:@"..."]</strong> to create the XML for       our SOAP request.</li>
</ol>
</li>
<li>Package      the SOAP header from (1), along with a SOAP Body, into a SOAP envelope.</li>
<li><strong>POST</strong> the SOAP      envelope to the Omniture Web Service endpoint.</li>
<li>Store the      results and parse them using libxml.</li>
</ol>
<h3>Authentication Credentials</h3>
<p>The following code snippet creates a valid SOAP header in Objective-C:</p>
<pre><code>/** Returns a SOAP Header that complies to the OASIS UsernameToken profile specification</code></pre>
<pre><code> */</code></pre>
<pre><code>- (NSString*) createSoapHeader {</code></pre>
<pre><code>    NSString* formatString = @"...use the header sample provided earlier...";</code></pre>
<pre><code>    //nonce</code></pre>
<pre><code>    srand(time(NULL));</code></pre>
<pre><code>    int n = rand();</code></pre>
<pre><code>    NSString* nonce = [[NSString stringWithFormat:@"%i", n] md5HexHash];</code></pre>
<pre><code>    //binary version for base64 encoding</code></pre>
<pre><code>    NSData* nonceBinary = [nonce dataUsingEncoding:NSUTF8StringEncoding];</code></pre>
<pre><code>    //date</code></pre>
<pre><code>    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];</code></pre>
<pre><code>    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];</code></pre>
<pre><code>    NSString* created = [formatter stringFromDate:[[NSDate date] </code></pre>
<pre><code>                                                    dateWithCalendarFormat:nil </code></pre>
<pre><code>                                                    timeZone:[NSTimeZone </code></pre>
<pre><code>                                                        timeZoneForSecondsFromGMT:0]]];</code></pre>
<pre><code>    [formatter release];</code></pre>
<pre><code>    // digest = base64(sha1(base64_decode(nonce)+created+secret))</code></pre>
<pre><code>    NSString* digest_concat = [NSString stringWithFormat:@"%@%@%@", </code></pre>
<pre><code>                                            nonce, created, </code></pre>
<pre><code>                                            @"YOUR_API_SECRET_THAT_YOU_NEVER_SHARE"];</code></pre>
<pre><code>    NSString* digest = [[[digest_concat dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO] </code></pre>
<pre><code>                          sha1Hash] </code></pre>
<pre><code>                        base64Encoding];</code></pre>
<pre><code>    return [NSString stringWithFormat:formatString, </code></pre>
<pre><code>            [user username], </code></pre>
<pre><code>            digest, </code></pre>
<pre><code>            [nonceBinary base64Encoding], </code></pre>
<pre><code>            created];</code></pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soapbuilders.org/114-soap-request-for-basic-report-using-the-omniture.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

