所以我制作的应用需要用户输入TextView的文本通过API通过电子邮件发送到电子邮件。我已经有一个API设置,我问它的主人如何在Xcode中发送电子邮件。这是他的回复:
"重新发送电子邮件API ...您实际上可以回到网站上已存在的API ....
如果您发送了POST变量' message_txt'到http://www.fakewebaddress.com/email.php"它应该发送电子邮件"
现在是开发新手,我努力想找到办法。
所以回顾一下我要问的问题:如何通过上述链接从TextView中获取文本?
由于
答案 0 :(得分:0)
在UI中添加UITextView。然后在标题(.h)文件中声明它,如下所示:
IBOutlet UITextView *emailText;
然后将UITextView链接到Interface Builder中的emailText。然后在您的实现文件(.m)文件中,创建一个可用于将POST请求发送到PHP文件的方法,如下所示:
-(void)sendEmail {
NSString *post = emailText.text;
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://www.fakewebaddress.com/email.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
}
注意强>
我想补充一点,您尚未指定PHP文件将如何处理文本数据。它是否需要它作为正文的一部分(可能是JSON文件)还是它接受查询(URL的一部分)?我添加的示例将数据添加到POST |请求正文。
<强>更新强>
抱歉,我没有注意到你想在Swift中使用它。以下是Swift中POST请求的示例:
func sendEmail() {
let url = NSURL(string:"http://www.fakewebaddress.com/email.php")
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
request.HTTPMethod = "POST"
// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)
// set data
var dataString = emailText.text
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData
// set content length
//NSURLProtocol.setProperty(requestBodyData.length, forKey: "Content-Length", inRequest: request)
var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
}