Как проверить, сохраняются ли мои данные на веб-сервере api через консоль в iphone - PullRequest
1 голос
/ 13 июня 2011

У меня есть приложение, в которое я отправляю свои данные в 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. Пожалуйста, помогите мне в решении этой проблемы. Спасибо

1 Ответ

0 голосов
/ 13 июня 2011

Если я посмотрю на ваш последний вопрос, ваш сервер, похоже, ожидает все данные в URL:

 http://192.168.0.68:91/JourneyMapperAPI?RequestType=Register&Command=NEW&firstname=rocky&lastname=singh&Username=rocky14&Password=xxx&Email=rocky@gmail.com

Но вы отправляете часть запроса в URL и часть запроса в виде URL-закодированные данные в теле HTTP.

Кроме того, вы используете вместо общих имен key1 , key2 , key3 и т. д.единицы ( имя , фамилия , имя пользователя , пароль и т. д.)

В целом проблема, скорее всего, заключается в томВы не отправляете запрос в формате, который ожидает сервер.Без описания серверного API трудно будет точно определить проблему в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...