利用第三方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來控制超時的時間。



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章