从objective-c发送空参数到php

时间:2014-08-26 20:29:15

标签: ios objective-c

我想知道的是......当我使用post方法向php发送空参数时,它发送为(null)。 让我详细说明一下。这是我的ios中的php post方法

NSString *urlString = [NSString stringWithFormat:@"http://localhost:8888/userinfo.php?name=%@&Email=%@&phone=%@",name,Email,phone];
 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

在我的应用中,用户不应填写所有参数,用户应仅填写一个参数。因此,如果用户只输入电话并按发送,其余字段将被存储为数据库中的(空)而不是空白。

这是我的应用程序执行php文件的方式,当null参数发送时

http://localhost:8888/userinfo.php?name=(null)&Email=(null)&phone=123445435"

我想要的是

http://localhost:8888/userinfo.php?name=&Email=&phone=123445435"

这可能吗?

3 个答案:

答案 0 :(得分:3)

试试这个:

NSString *urlString = [NSString stringWithFormat:@"http://localhost:8888/userinfo.php?name=%@&Email=%@&phone=%@",
 (name?name:@""),
 (Email?Email:@""),
 (phone?phone:@"")];
 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

条件运算符(?:)根据布尔表达式的值返回两个值中的一个。以下是条件运算符的语法。 条件? first_expression:second_expression;

答案 1 :(得分:2)

stringWithFormat:类似于printf以及其他采用格式化字符串的C语言。

在你的字符串中的各个点,你已经说过包括%@。这意味着从调用堆栈中取出一个对象并打印它。

定义打印nil对象以生成(null)

由于您无法更改nil的打印方式,因此请更改您传递的内容。 E.g。

NSString *string =
    [NSString stringWithFormat:@"parameter=%@", parameter ? parameter : @""];

即。 “如果参数不是nil,那么我们将传递参数;否则我们将解析空字符串”。

编辑:如果你想省略没有完全值的参数,可以在数组或字典中建立你想要的参数,然后在最后形成你的URL。 E.g。

NSMutableArray *arguments = [NSMutableArray array];

if(value1)
    [arguments addObject:[NSString stringWithFormat:@"property1=%@", value1];

if(value2)
    [arguments addObject:[NSString stringWithFormat:@"property2=%@", value2];

... etc ...

// this will include the '?' even if arguments is empty; don't forget to deal
// with that in production code
NSString *URLString = [NSString stringWithFormat:@"http://service?%@", 
                                  [arguments componentsJoinedByString:@"&"]];

答案 2 :(得分:1)

排除空参数应该可以解决问题。所以,而不是:

http://localhost:8888/userinfo.php?name=(null)&Email=(null)&phone=123445435

你想最终得到:

http://localhost:8888/userinfo.php?phone=123445435

你可以通过以下方式实现这一目标:

NSMutableArray *params = [NSMutableArray new];
if (name) [params addObject:[NSString stringWithFormat:@"name=%@", name]];
if (Email) [params addObject:[NSString stringWithFormat:@"Email=%@", Email]];
if (phone) [params addObject:[NSString stringWithFormat:@"phone=%@", phone]];

NSString *urlString = [NSString stringWithFormat:@"http://localhost:8888/userinfo.php?%@", [params componentsJoinedByString:@"&"]];