[ios開發]利用有道翻譯API實現簡單的翻譯功能

一、到有道翻譯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.text length] == 0)

    {

        return;

    }

    else

    {

          //鍵盤消失

        if([_textfield isFirstResponder])

        {

             [_textfield resignFirstResponder];

        }

        NSString *txt = _textfield.text;

        NSString *strURL = [NSString stringWithFormat:@"http://fanyi.youdao.com/openapi.do?keyfrom=xxxxxxx&key=1618693256&type=data&doctype=json&version=1.1&q=%@",[txtstringByAddingPercentEscapesUsingEncoding: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 = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&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,發現還是挺強大的,對錯誤的屏蔽挺好的。



發佈了14 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章