ASIHTTPRequest SOAP-проблема

Помогите, пожалуйста, создать ASIHTTPRequest, который должен отправлять xml-данные (soap-запрос). Я использовал ASIHTTPRequest для создания обычного запроса, но не мыла. В моем проекте iPhone мне нужно отправить запрос, идентичный запросу, который делает другая программа на моем Mac. Я использую WireShark для этого.

Вот экраны печати Wireshark:

Запрос на получение назначенных вакансий (часть 1): полное изображение

Получение запроса на работу с помощником (часть 1):Запрос на получение работы с помощником (часть 2):полное изображение

Получение запроса на работу (часть 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>

Заранее спасибо.


person Inspiration    schedule 10.08.2012    source источник
comment
Пожалуйста, добавьте код, который у вас есть, и сообщите нам, с каким именно битом у вас возникла проблема. Существует ряд руководств/вопросов по работе с SOAP на iOS.   -  person JosephH    schedule 10.08.2012


Ответы (1)


Я использовал этот код. Оно работает

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];
person Inspiration    schedule 03.09.2012