首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过PHP web服务器URL传递数组?

问如何通过PHP web服务器URL传递数组?
EN

Stack Overflow用户
提问于 2014-12-06 08:28:12
回答 1查看 150关注 0票数 0

我正在尝试将数据发送到PHP web服务器。

代码语言:javascript
复制
NSString *urlString = [NSString stringWithFormat: @"xxxxx.com/dbfuncts.php?action=createuser&user=%@&pword=%@&fname=%@&lname=%@&email=%@[&team_id=team_id]", [newPerson objectForKey:@"ua_username"], [newPerson objectForKey:@"ua_password"], [newPerson objectForKey:@"ua_fname"],[newPerson objectForKey:@"ua_lname"], [newPerson objectForKey:@"ua_email"], @@@@@];
//The array goes where '@@@@@' is.
NSURL *url = [NSURL URLWithString:urlString];
NSData* jsonData = [NSData dataWithContentsOfURL:url];
NSError *error;
id userProfile = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];


if(userProfile != nil){
    NSLog(@"%@", userProfile);
    return userProfile;
} else{
    NSLog(@"ERROR");
    return nil;
}

唯一的问题是我不知道如何在url中传递数组中的数据。我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2014-12-06 08:46:42

在这种情况下,您应该使用AFNetworking库

您只需在参数部分将数组设置为json,这一切都很神奇。

代码语言:javascript
复制
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *params = @{@"width": width, @"weight": weight};
[manager POST:@"https://mysite.com/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

要在操作完成之前阻塞主线程的执行,您可以在将主线程添加到操作队列之后执行操作waitUntilFinished。在这种情况下,您不需要在块中返回;设置__block变量就足够了。因此,您将请求包装在专用方法中,并在调用它们之后执行waitUntilFinished。但我认为,同步制作网络并不是一个好主意。

在请求加载的整个过程中,您的应用程序似乎已经冻结-完全不响应触摸和系统事件,直到请求完成。

至少,显示一个在请求完成之前不会被忽略的加载模式。更好的是,如果可能的话,让用户可以在请求加载时正常地与应用程序交互。

编辑

如果您需要在网络正常工作之前显示某些内容,则需要进行下一步操作。首先包装你的networkMethod:

代码语言:javascript
复制
- (void)postEventsWithHandler:(void (^)(BOOL isSuccess))handler
{   
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    NSDictionary *params = @{@"width": width, @"weight": weight};
    [manager POST:@"https://mysite.com/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    handler(YES);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    Handler(NO)
    }];
}

然后你需要从你的类中调用这个方法,在这种情况下,让我们想象一下,我们对所有的网络请求都有NetworkClass。

代码语言:javascript
复制
// SHOW modal popup or hud (BMProgressHUD for example)
[NetworkClass postEventsWithHandlerWithHandler:^(BOOL isSuccess) {
    // dismiss modal popup
    // make something...
    if (isSuccess)
    {

    }
    else
    {

    }
}];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27326843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档