使用開發工具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.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=%@",[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 = [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,發現還是挺強大的,對錯誤的屏蔽挺好的。