У меня есть приложение, в которое я отправляю свои данные в API веб-сервера, вводя значения в textfields
и получая ответ через сервер. Я написал следующий код для отправки данных на сервер. Я хочу получать данные с сервера в формате JSON.
Это мой .h файл:
#import <UIKit/UIKit.h>
@interface apicontroller : UIViewController
{
IBOutlet UITextField *txtfirstName;
IBOutlet UITextField *txtlast;
IBOutlet UITextField *txtUserName;
IBOutlet UITextField *txtPassword;
IBOutlet UITextField *txtEmail;
NSMutableData *webData;
}
@property (nonatomic,retain)UITextField *txtUserName;
@property(nonatomic,retain)UITextField *txtPassword;
@property (nonatomic,retain)UITextField *txtfirstName;
@property(nonatomic,retain)UITextField *txtlast;
@property(nonatomic,retain)UITextField *txtEmail;
@property(nonatomic,retain)NSMutableData *webData;
-(IBAction)click:(id)sender;
@end
Это мой .m файл:
#import "apicontroller.h"
@implementation apicontroller
-(void)sendRequest
{
NSString *post = [NSString stringWithFormat:@"key1=%@&key2=%@&key3=%@&key4=%@&key5=%@",txtfirstName.text,txtlast.text,txtUserName.text,txtPassword.text,txtEmail.text];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSLog(@"%@",postLength);
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://192.168.0.68:91/JourneyMapperAPI?RequestType=Register&Command=NEW"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (theConnection) {
webData = [[NSMutableData data] retain];
NSLog(@"%@",webData);
}
else
{
}
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[webData setLength: 0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[webData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
[connection release];
[webData release];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
NSLog(@"%@",loginStatus);
//greeting.text = loginStatus;
[loginStatus release];
[connection release];
[webData release];
}
-(IBAction)click:(id)sender
{
NSString *first = txtfirstName.text;
NSString *last = txtlast.text;
NSString *user = txtUserName.text;
NSString *pass = txtPassword.text;
NSString *email = txtEmail.text;
[self sendRequest];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[txtfirstName resignFirstResponder];
[txtlast resignFirstResponder];
[txtUserName resignFirstResponder];
[txtPassword resignFirstResponder];
[txtEmail resignFirstResponder];
}
- (void)dealloc {
[super dealloc];
}
@end
Когда я запускаю этот код и ввожу значения в textfield
и нажимаю на кнопку, я получаю следующий ответ на консоли:
{"isError": true, "ErrorMessage": "Требуется имя. Требуется фамилия. Требуется пароль. Требуется адрес электронной почты. Требуется имя пользователя.", "Результат": пусто, "ErrorCode": 903 }
Но я передал все параметры в API.
Пожалуйста, помогите мне в решении этой проблемы.
Спасибо