2012-08-10 89 views
1

請幫我創建ASIHTTPRequest,它應該發送xml數據(soap請求)。我使用ASIHTTPRequest來創建通常的請求,但從來沒有肥皂。 在我的iPhone項目中,我需要發送與請求相同的請求,而我的Mac上的其他程序也這樣做。我使用WireShark來做到這一點。ASIHTTPRequest SOAP問題

這裏是Wireshark的PrintScreens:

獲取Assinded喬布斯請求(第1部分):full image

Get Assinded Jobs Request (part 1): 獲取Assinded職位要求(第2部分):full image

Get Assinded Jobs Request (part 2):

我有創建ASIHTTPRequest的經驗,但它是JSON數據。我明白,如何用適當的標題創建請求。但我不知道如何用xml創建請求。

更新

完整的XML(對不起,1串,但Wireshark的讓XML來我以這種方式):

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://com.test/types/AstoriaObjectProperties" xmlns:ns1="http://com.test/wsdl/AstoriaObjectProperties" xmlns:ns2="http://java.sun.com/jax-rpc-ri/internal"><env:Body><ns1:getObjectEnumerationProperties env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><String_1 xsi:type="xsd:string">00000013UF10YZ</String_1><arrayOfString_2 xsi:type="ns0:ArrayOfstring" enc:arrayType="xsd:string[0]" xsi:nil="1"/><HashMap_3 xsi:type="ns2:hashMap" enc:arrayType="ns2:mapEntry[7]"><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">ancestorIds</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">getAssignedJobs</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">description</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">name</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">custAttrs</key><value xsi:type="enc:boolean">true</value></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">itemFlavor</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item><item xsi:type="ns2:mapEntry"><key xsi:type="xsd:string">defaultProperties</key><value xsi:type="xsd:anyType" xsi:nil="1"/></item></HashMap_3></ns1:getObjectEnumerationProperties></env:Body></env:Envelope> 

預先感謝您。

+0

請添加您到目前爲止的代碼,並讓我們確切知道您有哪些問題。有很多關於在iOS上執行SOAP的教程/問題。 – JosephH 2012-08-10 08:54:06

回答

0

我使用了這段代碼。它的工作原理

NSURL *url2=[NSURL URLWithString:stringForURL2]; 
self.request2 = [ASIFormDataRequest requestWithURL:url2]; 
[request2 setRequestMethod:@"POST"]; 
[request2 setValidatesSecureCertificate:NO]; 
[request2 addRequestHeader:@"SOAPAction" value:@""]; 
[request2 addRequestHeader:@"Content-Type" value:@"text/xml"]; 


NSString *soapMessage = xmlStringGoesHere; 


NSMutableData *soapdata = [[[NSMutableData alloc] initWithData:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]] autorelease]; 

[request2 setPostBody:soapdata]; 

request2.username = appDelegate.username; 
request2.password = appDelegate.password; 

[request2 setDelegate:self]; 
[request2 setTimeOutSeconds:60]; 
[request2 startAsynchronous];