2016-05-12 7 views
-2

Ich habe ein neues Projekt erstellen, mit dem ich Daten auf meinem Server Datenbanktabelle speichern muss. aber wenn ich Daten sende, speichert es einen Nullwert in meinen Tabellenfeldern. Ich habe es so oft versucht, aber es funktioniert nicht.Wie posten Sie Daten auf einem Webserver mit Objective C?

Jede Hilfe wäre willkommen.

PHP Script-Code

$name = $jsonObj['name']; 
$email = $jsonObj['email']; 
$phone = $jsonObj['phone']; 
$comment = $jsonObj['comment']; 

meine ViewController.h Datei

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
{ 
NSMutableData*mutableData; 
} 
@property (strong, nonatomic) IBOutlet UITextField *txname; 
@property (strong, nonatomic) IBOutlet UITextField *txemail; 
@property (strong, nonatomic) IBOutlet UITextField *txcontect; 
@property (strong, nonatomic) IBOutlet UITextField *txcomment; 
- (IBAction)submit:(id)sender; 

@end 

meine ViewController.m Datei

 - (IBAction)submit:(id)sender 
{ 
//Here YOUR URL 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"my URL…..."]]; 




//create the Method "GET" or "POST" 
[request setHTTPMethod:@"POST"]; 

//Pass The String to server(YOU SHOULD GIVE YOUR PARAMETERS INSTEAD OF MY PARAMETERS) 
NSString *userUpdate =[NSString stringWithFormat:@"name=%@&email=%@&phone=%@& comment=%@&",_txname.text,_txemail.text,_txcontect.text,_txcomment.text,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"); 
} 
} 
+0

Sie voll php-Script-Code eher dann 4 Zeilen – Shubhank

+0

Ihr Ziel c Code sieht gut aus geben müssen. Problem sollte von der Serverseite sein. Bekommst du eine Antwort? – Lion

Antwort

1

Sie kein json Objekt sendet. so in Ihrem PHP-Code versuchen, die Werte wie folgt zu erhalten:

$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$comment = $_POST['comment']; 
+0

ja richtig. Was ist '$ jsonObj' übrigens in deinem Code? Können Sie etwas Code vor diesen Zeilen anzeigen? –

1
NSDictionary* mainJSON = [NSDictionary dictionaryWithObjectsAndKeys: 
          _txname.text,@"name", 
          _txemail.text,@"email", 
          _txcontect.text,@"phone", 
          _txcomment.text,@"comment", 
          nil]; 

NSError * err; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:mainJSON options:NSJSONWritingPrettyPrinted error:&err]; 
NSString * prams = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSString *[email protected]"Your URL here..."; 
prams = [prams stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"]; 

NSURL *url = [NSURL URLWithString:urlString]; 
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; 
NSData *requestData = [prams dataUsingEncoding:NSUTF8StringEncoding]; 

if (prams.length>0) { 
    [urlRequest setHTTPMethod:@"POST"]; 
    [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
    [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [urlRequest setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[requestData length]] forHTTPHeaderField:@"Content-Length"]; 
    [urlRequest setHTTPBody: requestData]; 
} 

NSURLSessionDataTask * dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
    //NSLog(@"data=%@",data); 

    if (data.length>0 && error==nil) { 
     NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; 
     NSLog(@"Dict=%@",dict); 


    } 
}]; 
[dataTask resume]; 
Verwandte Themen