地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法

最近用使开发的过程中出现了一个小问题,顺便记录一下原因和方法--地址方法

    用使开发工具xcode4.6,模拟器IOS 6.1,本例用使的ARC模式,不需要手工autorelease,请各位看客不要吐槽。

    先看效果图,支撑汉译英,英译汉,试了一下日语,居然翻译出来的是英文。。。

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第1张图片地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第2张图片地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第3张图片地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第4张图片

    

    不说话废,直奔主题:

    一、到有道翻译API官网(http://fanyi.youdao.com/openapi)上请求Key

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第5张图片

    择选我是开发者,如果是为公司请求的,请择选我是站网主。

    在请求面页填写站网名称及地址,如果是训练的项目就随意起,但要超越6个字符,站网地址不能写localhost,写IP地址没事。

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第6张图片

    填写完后点击请求,会给你这样的息信,其中API key和keyfrom一定要记着,API的URL中会用到。

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第7张图片

    并且上面还会给出API的URL,其中的keyfrom和api key经已替换成刚刚请求的了。

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第8张图片

    议建将此口接URL和keyfrom及api key记录下来,以备后续用使。

    到此有道翻译API就功成请求了。

    

    二、在xcode主视图中参加UI件控

    具体方法就不逐一截图了,相信会用xcode的就会,都是此托来托去的活。

    用到了UITextField,UILabel,UIButton

    明声变量及方法的代码如下:

    

    @interface MainViewController : UIViewController<UITextFieldDelegate,UITabBarDelegate>{

    IBOutlet UITextField *_textfield;

 IBOutlet UILabel *_lblresult;

    }

    - (IBAction)querytran:(UIButton *)sender;

    三、在按钮件事querytran

    有道返回值有两种数据类型,一种是JSON一种是XML,本文以JSON格式为例,数据格式如下:

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第9张图片

    所以需要对JSON数据行进剖析,本例只取translation中的翻译,其它的时暂用不。

    代码如下:

    - (IBAction)querytran:(UIButton *)sender 

    {

        if([_textfield.textlength] == 0)

    {

        return;

    }

    else

    {

          

    //

    键盘失消

            if([_textfieldisFirstResponder])

        {

                 [_textfield resignFirstResponder];

        }

        NSString *txt = _textfield.text;

            NSString *strURL = [NSStringstringWithFormat:@"http://fanyi.youdao.com/openapi.do?keyfrom=xxxxxxx&key=1618693256&type=data&doctype=json&version=1.1&q=%@",[txt stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

       

            NSError *err = nil;

        NSString *strResult;

            NSLog(@"URL%@",strURL);

        if(strURL!=nil)

        {

            NSURL *url = [NSURL URLWithString:strURL];

            NSData *data = [NSData dataWithContentsOfURL:url];

            strResult = [self parseJsonDataWithKey:data];

         }

       

         if(result != nil)

      {

                    NSLog(@"result%@",strResult);

                if(err)

               {

                      NSLog(@"error=%@", [err description]);

               }

               else

               {

                     _lblresult.text = strResult;

               }

         }

    }

    

    //剖析JSON数据方法,并且取某key对应的值

    -(NSString *) parseJsonDataWithKey:(NSData *)data

    {

    NSString *result = nil;

    NSError *error;

        NSDictionary *json = [NSJSONSerializationJSONObjectWithData:data options:kNilOptionserror:&error];

    if (json == nil)

    {

            NSLog(@"json parse failed \r\n");

        return nil;

    }

        NSInteger *errcode = [[json objectForKey:@"errorCode"] intValue];

        NSLog(@"JSON ErrorCode: %d\r\n", errcode);

    if(errcode != 0)

    {

        return nil;

    }

    NSArray *array = [json objectForKey:@"translation"];

    result = [array objectAtIndex:0];

        NSLog(@"JSON translation: %@\r\n",result);

    

    return result;

    }

    四、运行调试可即看到效果

    没事用各种特殊字符来测试一下有道API,发明还是挺壮大的,对错误的蔽屏挺好的。

    地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第10张图片地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法_第11张图片

    

    

文章结束给大家分享下程序员的一些笑话语录: 问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25)

你可能感兴趣的:(ios开发)