-4

最近我一直在尝试在服务器上调用 *.php 文件并收集响应。我正在尝试在 xcode 中执行此操作以制作 ios 应用程序。我试图用以下方法做到这一点:

NSURLConnection *conn = [[NSURLConnection alloc] init];
(void)[conn initWithRequest:request delegate:self];

但是当我这样做时程序崩溃了,它说抛出了一个异常。所以我想知道如何轻松调用网络服务器并获得响应。我对 ios 开发非常陌生,所以你不认为我什么都知道;)。

我一直在浏览很多教程,但我似乎无法完成一项工作。

4

4 回答 4

1

在 Objective C 中有几种调用 Web 服务的方法。你可以使用ASHIHTTPrequest一个很好的文档是在这里。另外我假设你还没有找到这个教程

另外,如果您严格要使用NSURLConnection。这可以是你的方式。这是一个简单的登录 api 示例,其中用户 ID 和密码的值作为请求的标头值发送。

NSMutableURLRequest *theRequest   = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kWebServiceURL]];
[theRequest setValue:kWSReqH_GBLRequestMethodName  forHTTPHeaderField:kWSHFunctionName];
[theRequest setValue:userId forHTTPHeaderField:kWSReqH_GBLUserId];
[theRequest setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

//calling for request
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
于 2013-06-27T06:01:35.723 回答
1

所以我可能问错了这个问题,但这正是我想要的:

https://www.youtube.com/watch?v=FXQiEfjiYns

这是 SimpleSDK 的视频。我对我的 *.php 文件进行了测试,效果很好。

于 2013-06-27T07:29:12.617 回答
0

您不能在发送请求后立即释放 conn 对象。所以让它成为你类中的静态变量或成员变量。像这样的东西。。

@property (nonatomic, strong) NSURLConnection *connection;

...

@synthesize connection;
...

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"<url>"]];
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[self.connection start];

然后实现委托方法- (void)connectionDidFinishLoading:(NSURLConnection *)connection和其他必需的方法。

你能试试这个吗?

于 2013-06-27T05:53:53.507 回答
0

您收到错误是因为您必须正确实现 NSURLConnection 并实现它的委托方法。

通过这些链接,您会发现如何声明和构造它:

NSURLConnection 委托方法 http://yuvarajmanickam.wordpress.com/2012/10/17/nsurlconnection-basics-for-ios-beginners/

它的例子: http ://cagt.bu.edu/w/images/8/8b/URL_Connection_example.txt

于 2013-06-27T05:54:16.617 回答