0

到目前为止,我已经做到了。它将使用 http Header 发出 json String 请求的代码。当我运行此代码时,我没有收到任何错误。但我得到一个表达式结果未使用的警告。发送此 http 标头后,我应该从 Web 服务获得响应。

代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *nid = @"";
    NSString *vocab = @"";
    NSString *inturl = @"testoverview";
    NSString *mail = @"chh@fbr.dk";
    NSString *md5pw = @"4d57e7ef1b7c3f431aca424764e9d786";

    NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                    nid, @"nid", 
                                    vocab, @"vocab",
                                    inturl, @"inturl",
                                    mail, @"mail",
                                    md5pw, @"md5pw",nil];
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONWritingPrettyPrinted error:&error];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    if (!jsonData) {
        NSLog(@"Got an error; %@", error);
            } else if(jsonData) {

                NSString *url = @"http://www.taenk.dk/services/mobile";
                NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0];

                [request setValue:jsonString forHTTPHeaderField:@"X-FBR-App"];
                [[NSURLConnection alloc] initWithRequest:request delegate:self]; <-- this line triggers the warning: "Expression result unused"

                NSLog(@"jsonString %@", jsonString);

            }

任何人都可以为我澄清两件事:

  1. 这是否会在请求 Web 服务后立即触发响应?
  2. 如果是,我如何打印这个结果?
4

1 回答 1

1

您需要将结果分配给一个变量,例如

NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:...

供以后使用(例如[con cancel];

那么你至少应该实现委托方法connection:didFailWithError:。在课堂参考中,我再也看不到connection:didFinishLoading...了。你能用那个sendSynchronousRequest:returningResponse:error:代替,那么你就会得到结果,无论是正面的还是负面的。

这就是我检索数据的方式(这个版本没有 ARC):

- (void) connection :(NSURLConnection *)conn didReceiveData :(NSData *)data {
    NSString *msg = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    [self checkAutoMailReply:msg];
    [msg release];
}

msg包含纯响应数据,没有标题等。

于 2012-04-19T13:15:24.050 回答