Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Objective-C向PHPWeb服务发送数据并返回数据_Php_Objective C_Json - Fatal编程技术网

使用Objective-C向PHPWeb服务发送数据并返回数据

使用Objective-C向PHPWeb服务发送数据并返回数据,php,objective-c,json,Php,Objective C,Json,在我想向web服务发送数据之前,我会返回有效的JSON对象。然而,现在我已经添加了一些身份验证,当我从iOS应用程序调用它时,我不会返回任何JSON对象,但是如果我在浏览器中输入带有适用的$get参数的URL,我会成功地返回JSON,这对我来说毫无意义 我看了一下这里提出的类似问题,没有一个有效,它们都会使我的应用程序崩溃,错误返回空数据,所以我想我应该在这里提问,看看我做错了什么愚蠢的事情 以下是objective-C位: //Make the string and URL NSString

在我想向web服务发送数据之前,我会返回有效的JSON对象。然而,现在我已经添加了一些身份验证,当我从iOS应用程序调用它时,我不会返回任何JSON对象,但是如果我在浏览器中输入带有适用的$get参数的URL,我会成功地返回JSON,这对我来说毫无意义

我看了一下这里提出的类似问题,没有一个有效,它们都会使我的应用程序崩溃,错误返回空数据,所以我想我应该在这里提问,看看我做错了什么愚蠢的事情

以下是objective-C位:

//Make the string and URL

NSString* urlString = [NSString stringWithFormat:@"http://localhost/~Danny.Martin/Services/sites/getInfo.php?email=%@&password=%@", _username.text, _password.text];
NSURL* url = [NSURL URLWithString:urlString];

//TESTING - What URL are we using?
NSLog(@"%@", urlString);


//Take the data we get back and convert it into JSON
NSData* data = [NSData dataWithContentsOfURL:url];
NSMutableDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
我返回的URL已编辑,因为它不允许我执行本地主机操作:

/~Danny.Martin/Services/sites/getInfo.php?email=Danny&password=password

这是正确的,当我把它输入浏览器时,我会得到正确的JSON。如果我更改了用户名或密码参数,那么我将一无所获

密码是否真的是密码,因为您没有进行任何url编码,这可能会导致URLWithString:返回nil。正如Sam所说,您不应该使用GET请求进行身份验证,因为密码很容易被截获。您确实希望POST假定您的生产服务器至少支持HTTPS。此外,在使用application/x-www-form-urlencoded执行GET或POST时,您可能希望使用CFURLCreateStringByAddingPercentEscapes,以防密码中有任何保留字符。此外,如果您在Mac上运行web服务器,则除非您在模拟器中这样做,否则localhost将无法工作。尽管如此,如果不共享服务器代码的相关部分,我们无法告诉您为什么它无法工作。