我正在尝试在我的网站上创建的 php 页面和我编写的 xcode 项目中的 NSData 对象之间传输数据。php页面非常简单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mon MEGA BLOG</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<style type="text/css">
form
{
text-align:center;
}
</style>
<body>
<?php 'Bonjour'; ?>
</body>
</html>
我希望将“Bonjour”转移到我的数据对象中。从此时起,通过 $_GET 方法发送特定对象是毫无疑问的(尽管它已经在下面的代码中准备好了)。我只想用 echo 函数测试我的 php 页面的响应。我的xcode项目去:
if(![loginText.text isEqualToString:@""] && ![passwordText.text isEqualToString:@""])
{
//1. creation de la request
NSMutableString *string = [[NSMutableString alloc] initWithCapacity:200];
NSString *string01 = @"http://attheshop.fr/index.php?prof=&pass=";
[string appendFormat:string01];
NSString *string02 = loginText.text;
NSString *string03 = passwordText.text;
[string insertString:string03 atIndex:41];
[string insertString:string02 atIndex:36];
request01 =[NSURLRequest requestWithURL:[NSURL URLWithString:string]cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSLog(@"%@", string);
//2.creation de la connection et start loading data
NSURLConnection *connection01 = [[NSURLConnection alloc] initWithRequest:request01 delegate:self];
if(connection01)
{
//3.Create NSMutableData to receive data
receivedData = [NSMutableData data];
NSLog(@"Voici ce que contient le message %@", receivedData.description);
}
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// This method is called when the server has determined that it // has enough information to create the NSURLResponse.
// It can be called multiple times, for example in the case of a // redirect, so each time we reset the data.
// receivedData is an instance variable declared elsewhere.
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the new data to receivedData. // receivedData is an instance variable declared elsewhere.
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
// release the connection, and the data object
// inform the user
NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription], [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
//set an alert
UIAlertView *alert01 = [[UIAlertView alloc] initWithTitle:@"Probleme de connexion" message:@"La connexion a échoué" delegate:self cancelButtonTitle:@"Recommençer" otherButtonTitles:nil];
alert01.alertViewStyle = UIAlertViewStyleDefault;
[alert01 show];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// do something with the data // receivedData is declared as a method instance elsewhere
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
//6.Mettre les informations téléchargées dans un objet data envoyé à home.
NSData *response = [NSURLConnection sendSynchronousRequest:request01 returningResponse:nil error:nil];
//NSLog(@"response %@", response.description);
NSString *get = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"get %@", get.description);
NSString *string04 = @"error";
NSPredicate *errorTest = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", string04];
BOOL defError = [errorTest evaluateWithObject:get];
NSLog(@"%i",defError);
if (!defError)
{
//Si pas d'erreur, on lance le segue
[self performSegueWithIdentifier:@"loginMainSegue" sender:self];
}
//5.Si mauvais login ou password message alerte erreur
if (defError)
{
UIAlertView *alert02 = [[UIAlertView alloc] initWithTitle:@"Erreur" message:@"Votre login ou votre password est erroné" delegate:self cancelButtonTitle:@"Recommençer" otherButtonTitles:nil];
alert02.alertViewStyle = UIAlertViewStyleDefault;
[alert02 show];
}
}
最后,我的输出屏幕给出了以下结果: - receivedData.description = nothing(我想要“Bonjour”) - get.description = 完整的 php 页面,表明交换发生了。
你能帮忙看看我的代码出了什么问题吗?
谢谢