[置顶] 利用第三方server实现的人脸识别技术(2)

说明:face.com已经被facebook收购,停止了人脸识别的服务了。


      (接上篇)以faceapi.cn为例,先向faceapi.cn申请api_key和api_secret,有了这2个东西你就能向server提交你的表单,并等待返回。下面贴上我的代码:    

     

    NSMutableData *postData = [[NSMutableData alloc]init];
    _request = [[NSMutableURLRequest alloc]initWithURL:self.serviceURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15];

    [_request setHTTPMethod:@"POST"];
    NSString *boundary = @"-----0xKhTmLbOuNdArY";
    NSString *mycontent = [NSString stringWithFormat:@"multipart/form-data;boundary=%@",boundary];
    [_request setValue:mycontent forHTTPHeaderField:@"Content-type" ];
    [postData appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"Content-Disposition:form-data;name=\"api_key\"\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"%@\r\n",APIKEY] dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"Content-Disposition:form-data;name=\"api_secret\"\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"%@\r\n",APISECRET] dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"Content-Disposition:form-data;name=\"img_file\";filename=\"%@\"\r\n",@"test.jpg"]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"Content-Type:image/pjpeg\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:data];
    [postData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[[NSString stringWithFormat:@"--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [_request setValue:[NSString stringWithFormat:@"%d",[postData length]] forHTTPHeaderField:@"Content-Length"];
    [_request setValue:@"zh-CN" forHTTPHeaderField:@"Accepte-Language"];
    [_request setHTTPBody:postData];
    _connection = [[NSURLConnection alloc]initWithRequest:self.request delegate:self startImmediately:YES];


     回调函数包括其返回的JSON解析,就不写了, 这2个宏就是我的api_key和api_secret,对应URL提交对应的表单就ok了,很简单,其他我不赘述了,在faceapi.cn中都又简单的介绍。最近实在比较忙,哪位看到的地方,可以再交流。

     接上回,上面这段代码只是一个简单的表单提交,这里要注意的是\r\n和\n的区别,在windows和linux以及mac中换行是不一样的,在拼凑表单的时候一定要注意了,我当时就浪费了好几个小时在上面。

   好了,我们获得数据了,将其解析成字典就可以用了。

   那这里面就涉及到一个问题,设置超时的问题,官方的URLConnection在这做的不好,默认的时间是240秒超时,我们不能这么做因为这是一个非常不好的用户体验,这里有2个做法:1.用ASIHttpFormRequst,这个非常好用。2或者自己定义timmer来控制超时的时间。



 

你可能感兴趣的:(json,windows,linux,server,api,人脸识别)