将数据发送到服务器 - 但服务器获取空白数据

时间:2012-08-20 05:49:58

标签: iphone objective-c json webserver

我正在尝试将数据发送到服务器。当我发送请求时,它发送到服务器,但服务器得到它的空白。我不明白它为什么会发生。请帮我解决这个问题。

NSArray *keys = [NSArray arrayWithObjects:@"username",@"password",@"email",@"fullname",@"phone",@"status",nil];
NSArray *objects = [NSArray arrayWithObjects:@"test",@"123456",@"test999@test.com",@"name",@"234566343",@"1",nil];


NSDictionary *questionDict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

NSDictionary *jsonDict = [NSDictionary dictionaryWithDictionary:questionDict];
NSString *jsonRequest = [jsonDict JSONRepresentation];

RequestHandler *handler = [[RequestHandler alloc] init];
handler.method = @"POST";
handler.delegate = self;

   NSLog(@"JSOnRequest -- %@",jsonRequest);
handler.postData = jsonRequest;
handler.requestName = @"registration";
handler.URL =@"http://demo.keshavinfotech.com/edv/user_register.php?";

[handler startRequest];
[handler release];

- (void)startRequest 

{
 NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@",mRequestURL]];//NSURLRequestReturnCacheDataElseLoad

    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:requestURL

                                                           cachePolicy:NSURLRequestReturnCacheDataElseLoad

                                                       timeoutInterval:mTimeOut];



    [request setHTTPMethod:@"POST"];

    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];

    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

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


    [request setHTTPBody:[mPostData dataUsingEncoding:NSUTF8StringEncoding]];


    self.connection = [[[NSURLConnection alloc]initWithRequest:request delegate:self] autorelease];

}

是服务器编码 - 解码问题还是其他什么???

2 个答案:

答案 0 :(得分:1)

我使用以下参数调用服务器

WebserviceCall[622:f803] {
    email = "test999@test.com";
    fullname = name;
    password = 123456;
    phone = 234566343;
    status = 1;
    username = test;
}

然后响应就像下面的明智一样给我。

{"responseData":{"result":"failed","msg":"Please fill all the required fields"}}

你能不能给出正确的参数格式发送,我可以检查出来。

答案 1 :(得分:0)

尝试这样做:

//form you request like you did (I think it's ok), then

NSData *postData = jsonRequest;

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *urlRequest = [[[NSMutableURLRequest alloc] init] autorelease];
[urlRequest setURL:@"http://demo.keshavinfotech.com/edv/user_register.php?"];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[urlRequest setValue:@"utf-8" forHTTPHeaderField:@"charset"];
[urlRequest setHTTPBody:postData];
[urlRequest setTimeoutInterval:60.0];//or whatever interval you prefer

NSURLConnection *tmpConn = [[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self] autorelease];
self.connectionProperty = tmpConn;