ios - 如何在 Objective-C 中将表单数据发布到 URL

标签 ios iphone objective-c

我有 3 个 UITextfield 和 1 个按钮,当我按钮单击 3 个 UITextfield 时,数据会使用表单发送到数据库。

我的代码是将数据发送到数据库,但它在数据库中显示为空值。

<form action="//http://192.168.3.171:8090/RestWebService/rest/person" id="suggestions" method="post">
    <input id="name" name="name" type="text" >
    <input id="suggestion"  name="suggestion" type="text">
    <input id="submitsuggestion" name="submitsuggestion" type="text">
</form>

Viewcontroller.M

 #import "ViewController.h"

    @interface ViewController ()
    {


        NSMutableData *recievedData;
        NSMutableData *webData;
        NSURLConnection *connection;
        NSMutableArray *array;
        NSMutableString *first;


    }


    @end

    @implementation ViewController
    @synthesize webview;
    @synthesize firstName;
    @synthesize lastName;
    @synthesize email;
    - (void)viewDidLoad

    {}


     - (IBAction)send:(id)sender
        {
         NSString *name = firstName.text;
            NSLog(@"  name is %@ ",name);

            NSString *lastname = lastName.text;
            NSLog(@"  name is %@ ",lastname);

            NSString *emailname = email.text;
            NSLog(@"  name is %@ ",emailname);


            if (name.length == 0 || lastname.length == 0 || email.text==0) {
                UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Message!" message:@"plz enter 3 fields " delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];


                  [alert show];

     }else{
             webData=[NSMutableData data];
    NSURL *url = [NSURL URLWithString:@"http://192.168.3.128:8050/RestWebService/rest/person"];



    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

    NSData *requestData = [@"name=firstName&suggestion=lastName&submitsuggestion=email" dataUsingEncoding:NSUTF8StringEncoding];



    NSLog(@"requestData%@",requestData);

    [request setHTTPMethod:@"POST"];

    [request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];

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

            //[request setValue:requestData forHTTPHeaderField:@"Content-Length"];
    [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody: requestData];

            NSLog(@"requestData*******:%@",requestData);

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

    if(conn)
    {      
        NSLog(@"Connection successfull");
        NSLog(@"GOOD Day My data %@",webData);
    }
    else
    {
        NSLog(@"connection could not be made");

    }







    }
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [webData setLength:0];
    NSLog(@"DidReceiveResponse");
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [webData appendData:data];
    NSLog(@"DidReceiveData");
    NSLog(@"DATA %@",data);
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"Error is");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{

    NSLog(@"Succeeded! Received %d bytes of data",[webData length]);
    NSLog(@"Data is %@",webData);



    // NSLog(@"receivedData%@",_receivedData);

    NSString *responseText = [[NSString alloc] initWithData:webData encoding: NSASCIIStringEncoding];
    NSLog(@"Response: %@", responseText);//holds textfield entered value

    NSLog(@"");

    NSString *newLineStr = @"\n";
    responseText = [responseText stringByReplacingOccurrencesOfString:@"<br />" withString:newLineStr];

    NSLog(@"ResponesText %@",responseText);

   }
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

我的UITextfield数据将存储在数据库中,但它是空的。

最佳答案

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    self.appListData = [NSMutableData data];    // start off with new data
}

如何通过web服务

NSString *post = [NSString stringWithFormat:@"first_name=%@&last_name=%@",firstName.text,lastName.text];
    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
    $first name = $_POST['first_name'];
    $last name=$_POST['last_name'];


    echo $username;
?>

关于ios - 如何在 Objective-C 中将表单数据发布到 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21927965/

相关文章:

ios - iOS 应用程序中的构建信息(构建日期/时间应用程序)

ios - AVPlayer 的 iOS 应用程序中的 FairPlay DRM 支持

ios - Firebase Swift iOS 取回图像时的图像缓存问题

iphone - MFMailComposeVC

ios - UIScrollView 中的 UITableView 第一次没有接收到触摸

ios - 如何根据设备类型定义预处理器宏?

ios - Xcode 中的 "No provisioning profiles found"

iphone - TableView : Data overlapped while delete the row

iphone - 在适用于 iOS 和非公共(public) API 的 Phonegap 应用程序中使用 Jquery Mobile

iphone - 无法在 iPhone 上点击 Admob 广告