Необходимо ли создавать мыльные сообщения при использовании ASIFormDataRequest / ASIHTTPRequest? - PullRequest
0 голосов
/ 23 декабря 2011

Я использовал NSURLConnection для связи с веб-сервисом Soap, и он работал нормально.

Сейчас я использую ASIFormDataRequest и не получаю, нужно ли создавать мыльные сообщения для этого? и я не знаю, что такое SoapAction.

Вот код, который я использую

NSURL *url = [NSURL URLWithString:@"http://SERVERNAME.com/WEBSERVICENAME"];

[self setFrmdataReq:[ASIFormDataRequest requestWithURL:url]];
[frmdataReq setRequestMethod:@"POST"];
[frmdataReq addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"];

[frmdataReq setPostValue:txtField.text forKey:@"city"];
[frmdataReq setDelegate:self];
[frmdataReq setDidFinishSelector:@selector(requestFinished:)];
[frmdataReq setDidFailSelector:@selector(requestFailed:)];
[frmdataReq startSynchronous];

UPDATE

Мыло, которое я использовал,

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\
                             <soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\
                             <soap12:Body>\
                             <getCityTime xmlns=\"http://www.Nanonull.com/TimeService/\">\
                             <city>%@</city>\
                             </getCityTime>\
                             </soap12:Body>\
                             </soap12:Envelope>",txtField.text];


    NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMessage length]];

    [request addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];

    [request addValue:msgLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    if(conn)
    {
        responseData = [[NSMutableData data]retain];
        NSLog(@"connection successful");
    }
    else
        NSLog(@"connection fail.");

Я не определил SOAPAction, поскольку ничего об этом не знаю.

1 Ответ

0 голосов
/ 27 декабря 2011

При использовании ASIHTTPRequest вам необходимо создать запрос SOAP в основном так же, как вы делаете с NSURLConnection.

Вызов setPostValue в ASIHTTPRequest предназначен для создания запросов HTTP POST в том же формате, что и для тегов POST <form> в HTML.

Для сравнения ASIHTTPRequest / NSURLConnection, смотрите такие вещи, как:

ASIHTTPRequest vs NSURLConnection

и "Что такое ASIHTTPRequest?" на:

http://allseeing -i.com / ASIHTTPRequest /

...