我想知道的是......当我使用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"
这可能吗?
答案 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:@"&"]];