【发布时间】:2010-02-27 09:53:47
【问题描述】:
我下载了苹果的使用 HTTP POST 和 GET 的演示(他们的示例应用程序有一个带有不同部分的标签栏),代码太混乱了!
谁能给我一些示例代码或一些关于它的教程的链接? :)
谢谢!
【问题讨论】:
标签: objective-c http post get
我下载了苹果的使用 HTTP POST 和 GET 的演示(他们的示例应用程序有一个带有不同部分的标签栏),代码太混乱了!
谁能给我一些示例代码或一些关于它的教程的链接? :)
谢谢!
【问题讨论】:
标签: objective-c http post get
Matt Long 的这个演练特别好: http://www.cimgf.com/2010/02/12/accessing-the-cloud-from-cocoa-touch/
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL
URLWithString:@"http://www.cimgf.com/testpost.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/xml"
forHTTPHeaderField:@"Content-type"];
NSString *xmlString = @"<data><item>Item 1</item><item>Item 2</item></data>";
[request setValue:[NSString stringWithFormat:@"%d",
[xmlString length]]
forHTTPHeaderField:@"Content-length"];
[request setHTTPBody:[xmlString
dataUsingEncoding:NSUTF8StringEncoding]];
[[NSURLConnection alloc]
initWithRequest:request
delegate:self];
【讨论】:
这是使用 GET 的简单方法:
NSURL *url = [NSURL URLWithString:@"http://www.32133.com/test?name=xx"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"ret=%@", ret);
【讨论】:
您可能还想查看此示例
ASIFormDataRequest *request =
[[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
您可以在此处找到更多详细信息: http://www.redcodelabs.com/2009/08/objective-c-http-post-get-data/
【讨论】:
在objective-c中实现HTTP请求的方法有很多,CFNetwork库就是为此目的而设计的,但是开发http请求最简单的方法是使用NSURLConnection。
这是一个示例:
NSURLConnection *cmdConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES] autorelease];
您将收到didreceiveResponse: 和didreceiveData: 代表的回复。
【讨论】:
如果您想发布表单,希望这对您有所帮助:
NSMutableURLRequest *request =
[[NSMutableURLRequest alloc] initWithURL:
[NSURL URLWithString:@"http://www.32133.com/test"]];
[request setHTTPMethod:@"POST"];
NSString *postString = @"name=ivybridge&description=This%20is%20desp.";
[request setValue:[NSString
stringWithFormat:@"%d", [postString length]]
forHTTPHeaderField:@"Content-length"];
[request setHTTPBody:[postString
dataUsingEncoding:NSUTF8StringEncoding]];
[[NSURLConnection alloc]
initWithRequest:request delegate:self];
【讨论】: