gpt4 book ai didi

php - 如何将值从pHp服务器脚本返回到NSMutableData( objective-c ,iOS)

转载 作者:行者123 更新时间:2023-12-01 17:28:14 24 4
gpt4 key购买 nike

好的,我很难找到一个答案,而不仅仅是使用JSON或ASIHTTPRequest。但是,我认为我的问题更加具体。我只是将编程作为一种爱好,所以我不是专家。话虽如此,我对此的抽象理解可能完全不合时宜,因此这个问题可能无法回答。

基本上,我想做的是将HTTP请求发送到Web服务器上的pHp脚本,并让Web服务器返回一个值,比如说一个简单的整数值或bool值(例如,一个登录脚本返回yes / no )。在这一点上,我不担心安全性,因为我正努力简化自己对此的理解。

从我收集的资料来看,我会用一些东西来达到

// Create the request.
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
// create the connection with the request
// and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
// Create the NSMutableData to hold the received data.
// receivedData is an instance variable declared elsewhere.
receivedData = [[NSMutableData data] retain];
} else {
// Inform the user that the connection failed.
}

这是从Apple文档中获得的,我通常对此有所了解。因此,可以说它通过URL将信息发送到pHp文件,然后该文件:
//pHp file gets information
//pHp file uses that information to check against a mySQL database
//pHp now has the variable $result with a value of 1 in it

另外,假设我可以做到所有这些。我的问题是,如何将pHp中的值返回给iOS'NSMutableData'变量。我会回声吗?例如:
echo "$result";

然后将这些信息放入NSMutableData中(变量$ result)?我知道如果我严格通过pHp / HTML等来执行此操作,则可能会使用 session 变量之类的东西来允许其他页面访问该变量。

还是有其他一些pHp函数将数据返回给我不知道的NSMutabalData?基本上,这是我遇到麻烦的两者之间的链接,即从pHp脚本返回数据-我真的不明白NSMutableData正在“获取”是什么。

我已尝试尽可能详细,对这个冗长的问题感到抱歉。请仅假设这是我要尝试做的所有事情,请返回一个值。安全性并不重要(我正在尝试以最简单的级别来理解它,然后在其上进行构建)。我正在尝试避免任何模糊的答案,例如“编写Web服务”或“使用 _ ”来完成此操作,而且我敢肯定有很多更好的方法可以执行此操作,但我不会急于解决一个程序-我只是想学习一下,以更好地理解NSURLConnection,pHp,NSMUtableData以及齿轮如何相互配合。如果我要问的内容在技术上是不可能的,并且没有任何意义,那么我也很感谢您的回答。我尝试搜索,但没有找到关于此难题的满意答案。

提前致谢。

编辑:

我试过了
...
NSMutableData *receivedData = [[NSMutableData alloc] init];
receivedData = [[NSMutableData data] retain];
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
label.text = receivedDataString;
...

它在服务器上调用一个pHp文件,该文件基本上是:
<?pHp
$result = "TRUE";
var_dump($result);
?>

这不起作用。我认为我的问题是在pHp端,是否有一些特殊的命令可以将值返回给NSMutableData对象? (只是一些额外的信息,也许可以进一步阐明我的问题)。

编辑二:

我似乎无法直接回应,可能是因为我以前只曾匿名使用过该网站,并且我拥有一个新帐户:)感谢您的回答,查尔斯,我尝试使用echo和var_dump,似乎都没有发送数据返回(我的NSMutableData对象转换为NSString时似乎是空的-除非我的 objective-c 错误,但是我已将其解析为几乎最低限度,因此我不认为是这种情况)。

最佳答案

好的,我相信我可以使用它,因此,如果其他人正在寻找相同的答案,我将发布答案。

服务器上的PHP文件如下:

<?php
echo 'Works';
?>

我的h文件包含
#import <UIKit/UIKit.h>

@interface SampleViewController : UIViewController {
IBOutlet UIButton *theButton;
NSMutableData *receivedData;}
@property (nonatomic, retain) IBOutlet UIButton *theButton;
-(IBAction) clickTheButton:(id)sender;
@end

我的m文件包含在相关部分中(其他所有内容都是在SDK中创建Apple时将其放到m文件中的标准内容)
-(IBAction) clickTheButton:(id)sender {
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"<path to my php file>try.php"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
receivedData = [[NSMutableData data] retain];
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
NSLog(@"This1: %@", receivedData);
NSLog(@"This2: %@", receivedDataString);
} else {
// Inform the user that the connection failed.
}
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
NSLog(@"This3: %@", receivedData);
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the new data to receivedData.
// receivedData is an instance variable declared elsewhere.
[receivedData appendData:data];
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
NSLog(@"This4: %@", receivedDataString);
NSLog(@"This5: %@", receivedData);
}

NSLogs输出如下:

This1:'<>'

This2:

This3:'<>'

This4:作品

This5:'<24726573 756c74>'

为了回答我的原始问题, echo 'Works';是将Works单词返回到NSMutableData对象的PHP代码。建立连接后,我需要调用 didRecieveData:方法,以将回显的信息实际放入数据文件中。

关于php - 如何将值从pHp服务器脚本返回到NSMutableData( objective-c ,iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5393967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com