iOS - 如何使用SOAP发送附件?

时间:2014-09-26 08:06:18

标签: ios iphone soap nsurlconnection nsurlrequest

我正在使用NSMutableURLRequest使用SOAP API将参数上传到服务器,并且工作正常。

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 个答案:

答案 0 :(得分:1)

您好您可以将文件转换为NSDATA然后转换为BASE64字符串并将其作为参数添加到您的请求正文中,然后在后端将BASE64字符串转换为{{1}并将其另存为文本文件。

<强>编码

Binary Data

以下是BASE64 Conversion classes

的链接

只需添加一个参数

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