2014-09-26 100 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字符串和參數添加到您的請求體後,在後臺可以BASE64字符串轉換爲Binary 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並用呼叫發送數據....我無法弄清楚的是,我該如何發送這個調用的文件數據? – 2014-09-26 10:54:30

+0

好像你必須發送文本文件的文本。是嗎? – abhishekkharwar 2014-09-26 12:11:15

+0

不需要,我必須將該文件作爲附件發送。 – 2014-09-26 12:29:09