这里的大多数信息是指废弃的ASIHTTPREQUEST项目,请原谅我再次询问。

实际上,我需要刷磁条并将轨道2数据发送到返回“已注册”或“未注册”的Web服务(取决于卡的状态...)

所以我的数据简单地以

NSData *data = [notification object];

然后我需要将其传递给url的顺序

http://example.com/CardSwipe.cfc?method=isenrolled&track2=data

然后只收到一个响应字符串...

我已经搜索了很多,关于是否应该仅使用AFNetworking,RESTkit或本机NSURL / NSMutableURLRequest协议(protocol)来完成,似乎有一些矛盾的答案。

最佳答案

在Objective-C中执行HTTP请求的选项可能有些令人生畏。对我来说效果很好的一种解决方案是使用NSMutableURLRequest。一个示例(使用ARC,因此使用YMMV)是:

- (NSString *) getDataFrom:(NSString *)url{
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setHTTPMethod:@"GET"];
    [request setURL:[NSURL URLWithString:url]];

    NSError *error = nil;
    NSHTTPURLResponse *responseCode = nil;

    NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];

    if([responseCode statusCode] != 200){
        NSLog(@"Error getting %@, HTTP status code %i", url, [responseCode statusCode]);
        return nil;
    }

    return [[NSString alloc] initWithData:oResponseData encoding:NSUTF8StringEncoding];
}

更新:

您问题的标题,加上标签说POST,但是示例URL会指示GET请求。在GET请求的情况下,以上示例就足够了。对于POST,您可以按以下方式进行更改:
- (NSString *) getDataFrom:(NSString *)url withBody:(NSData *)body{
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:body];
    [request setValue:[NSString stringWithFormat:@"%d", [body length]] forHTTPHeaderField:@"Content-Length"];
    [request setURL:[NSURL URLWithString:url]];

    /* the same as above from here out */
}

关于objective-c - 简单的Objective-C GET请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9404104/

10-14 21:02
查看更多