zoukankan      html  css  js  c++  java
  • 地址方法[ios开发]利用有道翻译API实现简单的翻译功能地址方法

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

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

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

        

        

        不说话废,直奔主题:

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

        

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

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

        

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

        

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

        

        议建将此口接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格式为例,数据格式如下:

        

        所以需要对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,发明还是挺壮大的,对错误的蔽屏挺好的。

        

        

        

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

  • 相关阅读:
    自定义asp.net mvc Filter 过滤器
    基于委托的C#异步编程的一个小例子 带有回调函数的例子
    ASCII、Unicode和UTF-8编码的区别
    Specification模式的一个不错的示例代码
    codesmith 自动生成C# model 实体模板
    Quartz.NET 实现定时任务调度
    FtpHelper类匿名获取FTP文件
    crc32 根据字符串获取校验值
    机器学习能做什么
    RunHelper,一个为跑步而设计的开源的android app
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3031575.html
Copyright © 2011-2022 走看看