остальные веб-сервисы в iphone - PullRequest
1 голос
/ 01 сентября 2011

У меня сейчас проблема. Мне нужно передать идентификатор транзакции и пароль пользователя в службу отдыха, и предполагается, что мне нужно вернуть значение true / false (в формате XML). Тем не менее, он последовательно возвращает меня (ноль) .. Я полностью потерян, кто-то, пожалуйста, помогите.

    NSString *urlString = [NSString stringWithFormat:@"https://10.124.128.93:8443/axis2/services/C3WebService/completeWithdrawal  Transaction?transactionId=%@&password=%@", _transactionID.text, _userPassword.text];

    NSURL *url = [[NSURL alloc] initWithString:urlString];
    NSString *result = [[NSString alloc] initWithContentsOfURL:url];


    NSLog(@"%@",result );

Мой результат постоянно возвращает меня к нулю. Как мне продолжить отсюда?

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011
.h:
    NSMutableData *responseData;

.m:
    - (void)load {
        NSURL *myURL = [NSURL URLWithString:@"https://10.124.128.93:8443/axis2/services/C3WebService/completeWithdrawal  Transaction?transactionId=%@&password=%@", _transactionID.text, _userPassword.text];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
                                                 cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                             timeoutInterval:60];

    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    responseData = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    [responseData release];
    [connection release];
    [textView setString:@"Unable to fetch data"];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    NSLog(@"Succeeded! Received %d bytes of data",[responseData
                      `enter code here`                             length]);
    NSString *txt = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding] autorelease];

}
3 голосов
/ 01 сентября 2011

Рассмотрите возможность использования NSURLConnection, который имеет обратный вызов для результата, а также обратный вызов для получения подробных сведений об ошибке. Он также не выполняется в потоке пользовательского интерфейса (не вешает пользовательский интерфейс во время запроса).

 NSURL *url = [NSURL URLWithString:@"http://www.mysite.com"];

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

 [request setHTTPMethod:@"GET"];
 [[NSURLConnection alloc] initWithRequest:request delegate:self];

Затем вы можете реализовать методы делегата для получения ошибки, данных и других деталей:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];

    NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"result: %@", responseString);

    [responseString release];
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
      NSLog(@"error - read error object for details");
}
1 голос
/ 01 сентября 2011

Вместо этого вы можете попробовать использовать "initWithContentsOfURL: encoding: error:" и проверить "error". Также используйте Charles или другой http sniffer и сравните результаты с прямым запросом браузера (проверяли ли вы результаты в браузере?)

...