2014-09-26 2 views
0

Я использую NSMutableURLRequest для загрузки параметров на сервер с использованием SOAP API, и он работает нормально.iOS - Как отправить приложение с помощью SOAP?

static NSString *URLString = @"http://www.myURL"; 
NSMutableURLRequest *request = 
[NSMutableURLRequest requestWithURL:[NSURL URLString]]; 

[request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPMethod:@"POST"]; 
[request addValue:@"http://..." forHTTPHeaderField:@"SOAPAction"]; 

NSString *name = @"John"; 

NSString *parameters = [NSString stringWithFormat: 
         @"<s:Envelope xmlns:s=\"http://..../\">\n" 
         "<s:Body >\n" 
         "<name>%@</name>\n" 
         "</s:Body>\n" 
         "</s:Envelope>\n", name]; 
[request setHTTPBody:[parameters dataUsingEncoding:NSUTF8StringEncoding]]; 

_myConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

Теперь я хочу отправить текстовый файл (приложение) вместе с параметрами.

Может кто-нибудь помочь?

ответ

1

Привет вы можете преобразовать файл в NSDATA затем в BASE64 строку и добавить в качестве параметра для вашего тела запроса и после этого на внутреннем интерфейсе можно преобразовать строку в BASE64Binary Data и сохранить его в виде текстового файла.

Кодирование

NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"file.txt"]; 
NSData *data = [NSData dataWithContentsOfFile:str]; 
NSString *base64String = [data base64EncodedStringWithOptions:0]; 
NSLog(@"%@", base64String); 

Вот ссылка на BASE64 Conversion classes

Просто добавьте еще один параметр

NSString *parameters = [NSString stringWithFormat: 
        @"<s:Envelope xmlns:s=\"http://..../\">\n" 
        "<s:Body >\n" 
        "<name>%@</name>\n" 
        "<fileData>%@</fileData>\n" //Here is new parameter 
        "</GetChanges>\n" 
        "</s:Body>\n" 
        "</s:Envelope>\n", name, base64String]; 
+0

У меня нет доступа к серверной стороне. Мне нужно отправить информацию о файле в следующий параметр: cid: note.txt и отправить данные с помощью вызова .... что я не могу понять, как я должен отправлять данные файла с этим вызовом? –

+0

кажется, что вам нужно отправить текст текстового файла. это? – abhishekkharwar

+0

Нет. Мне нужно отправить файл в виде вложения. –

Смежные вопросы