发送PHP参数,等待响应

时间:2014-01-31 12:54:38

标签: ios iphone objective-c

我正在构建移动应用程序的登录系统,需要使用 POST / GET 方法将用户名和密码发送到PHP项目。

我已经阅读了互联网上的一些教程,并且看到大多数人教会如何做到这一点,但我需要发送帖子,并接收通过PHP生成的值,即:

  • 我们发送PHP的登录名和密码
  • 如果登录错误,PHP会显示错误登录名和密码的消息。
  • 如果你是对的,它会在屏幕上显示另一条消息

而且,这就是我想要做的,除了发送参数之外,我想从PHP文件接收响应,它可能在Ios中?

3 个答案:

答案 0 :(得分:3)

以下代码使用POST方法描述简单示例。(如何通过POST方法传递数据

您可以使用以下代码段,如in this article所述:

在这里,我简单描述了如何使用POST方法。

  

1。使用实际用户名和密码设置帖子字符串。

NSString *post = [NSString stringWithFormat:@"&Username=%@&Password=%@",@"username",@"password"];
     

2。使用NSASCIIStringEncoding以及您需要以NSData格式发送的帖子字符串对帖子字符串进行编码。

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
     

您需要发送数据的实际长度。计算长度   帖子字符串。

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
     

3。使用HTTP方法,http标题字段以及帖子字符串的长度等所有属性创建Urlrequest。创建URLRequest   反对并初始化它。

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
     

设置要将数据发送到该请求的网址。

[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.abcde.com/xyz/login.aspx"]]];
     

现在,设置 HTTP 方法( POST或GET )。写下这条线   你的代码。

[request setHTTPMethod:@"POST"];
     

设置HTTP标题字段,其中包含发布数据的长度。

[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
     

还设置HTTP标头字段的编码值。

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
     

使用postData设置urlrequest的HTTPBody

[request setHTTPBody:postData];
     

4. 现在,创建URLConnection对象。使用URLRequest初始化它。

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
     

它返回初始化的url连接并开始加载数据   对于网址请求。您可以检查是否URL连接   正确完成或不使用 if / else 语句,如下所示。

if(conn)
{
NSLog(@”Connection Successful”)
}
else
{
NSLog(@”Connection could not be made”);
}
     

5. 要从HTTP请求接收数据,您可以使用URLConnection类参考提供的委托方法。   代表方法如下。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
     

上面的方法用于接收我们使用post获得的数据   方法

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
     

此方法,可以用来接收错误报告   没有与服务器建立连接。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
     

上述方法用于在连接完成后处理数据   成功。

请参阅 This This 文档了解POST方法。

以下是源代码为HTTPPost Method.

的最佳示例

答案 1 :(得分:3)

//Create the request

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"your script name.php"]];
// create the Method "GET" or "POST"

[request setHTTPMethod:@"POST"];

//Pass The String to server
NSString *userUpdate =[NSString stringWithFormat:@"artist_email=%@ ",your string Name,nil];

//Check The Value what we passed
NSLog(@"the data Details is =%@", userUpdate);

//Convert the String to Data
 NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding];

//Apply the data to the body
[request setHTTPBody:data1];

//Create the response and Error

NSError *err;
NSURLResponse *response;

NSData *responseData = [NSURLConnection sendSynchronousRequest:request      returningResponse:&response error:&err];

NSString *resSrt = [[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding];

//This is for Response 
 NSLog(@"got response==%@", resSrt);

 if(resSrt)
{
NSLog(@"got response");


}
 else
{
 NSLog(@"faield to connect");
 }

答案 2 :(得分:2)

借助NSURLConnection委托方法处理结果数据

  NSString *post = [NSString stringWithFormat:@"username=%@&password=%@",@"Raja",@"12345"];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[post length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://localhost/promos/index.php"]];


    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];

    NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:request delegate:self];

    if( theConnection ){
        // indicator.hidden = NO;
        mutableData = [[NSMutableData alloc]init];
    }

您的PHP代码

<?php
    $username = $_POST['username'];
   $password = $_POST['password'];

$result=//check your condition

    echo $result;
?>