我是用post连接学校的tomcat服务器,源码如下://返回一个json字符串的
-(NSString*)getAPI:(NSString*)api_url withPost:(NSString*)post_data{
    //post提交的参数,格式如下:  
    //参数1名字=参数1数据&参数2名字=参数2数据&参数3名字=参数3
    NSString *post = [NSString stringWithFormat:post_data];        
    //将NSSrring格式的参数转换格式为NSData,POST提交必须用NSData数据。  
    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingMacChineseSimp);
    NSData *postData = [post dataUsingEncoding:enc allowLossyConversion:YES];
    //计算POST提交数据的长度  
    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];  
    //定义NSMutableURLRequest  
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];  
    //设置提交目的url  
    [request setURL:[NSURL URLWithString:api_url]];  
    //设置提交方式为 POST  
    [request setHTTPMethod:@"POST"];  
    //设置http-header:Content-Length  
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];  
    //设置需要post提交的内容  
    [request setHTTPBody:postData];
    //定义  
    NSHTTPURLResponse* urlResponse = nil;  
    NSError *error = [[NSError alloc] init];  
    //同步提交:POST提交并等待返回值(同步),返回值是NSData类型。  
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
    //将NSData类型的返回值转换成NSString类型  
    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];  
    NSLog(@"request : %@",request);
    NSLog(@"post data : %@",post_data);
    NSLog(@"json data : %@",result);
    return result;
}
问题很奇怪:我post数据是id=1&page=1的时候返回正常,但是id=1&page=2的时候就返回null了
是不是服务器的问题?但是我用python测试了一下api没有问题。。
而且前面有个安桌版本,就是用的这个api无奈了,想问问大家有没有遇到过类似的问题?

解决方案 »

  1.   

    你发了一大片,结果是谁都不知道你返回的json是什么,还有 是什么东西是null
      

  2.   

    就是返回的内容是null,并不是什么值是null。
    返回的json什么结构和这个问题无关,因为那个服务器上面所有的json都是这个问题。
      

  3.   

    很好的理由,不错,但是NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];  
       这句话responseData在你这段代码中没有看到有声明另外 如果服务器返回的null给你那还是说有返回字符串"null",如果服务器什么也没有返回,那控制台会没有输出,即使这个差别很小,但是你的表达仍然非常令人不想回答,问问题技能=-1
      

  4.   

    ok看到了声明了, 建议你换个API
      

  5.   

    你在NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 这里断点看下, 是否responseData为nil, 如果为nil, 看看error里面的信息. 注意看看是否是编码转换导致的nil.