HTTP请求GET响应显示NULL值

时间:2014-11-25 08:27:47

标签: ios objective-c http nsurlconnection

我想通过使用简单的Objective C Code方法创建HTTP请求postget响应。下面的代码我可以成功发布。但我没有收到回应数据。仅响应打印null值。请帮助我,我需要获得响应数据。

下面是我的代码

NSString *post = [NSString stringWithFormat:@"name=%@",name];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:URLPATH]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];

if(conn) {
      NSLog(@"Connection Successful");
} else {
      NSLog(@"Connection could not be made");
}



// Create GET method
NSError *err;
NSURLResponse *responser;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responser error:&err];

// JSON Formatter
NSError *error;
NSDictionary *jsonsDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *respon = [jsonsDictionary objectForKey:@"response"];
NSLog(@"UPDATE RESPONSE : %@", respon);

2 个答案:

答案 0 :(得分:0)

非常简单:

//-- Convert string into URL
    NSString *jsonUrlString = [NSString stringWithFormat:@"demo.com/your_server_db_name/service/link"];
    NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    //-- Send request to server
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
    //-- Send username & password for url authorization
    [request setValue: jsonUrlString forHTTPHeaderField:@"Content-Length"];
    [request setHTTPMethod:@"POST"]; //-- Request method GET/POST

    //-- Receive response from server
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    //-- JSON Parsing with response data
    NSDictionary *result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"Result = %@",result);

示例:https://github.com/svmrajesh/Json-Sample

答案 1 :(得分:0)

您的数据发布是NSString *post = [NSString stringWithFormat:@"name=%@",name];。因此,在这种情况下,您需要将请求标头"Content-Type"设置为"application/x-www-form-urlencoded",或使用以下代码将字符串转换为数据并设置Content-Type标头:

NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
 ...
[request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];