一、到有道翻譯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,發現還是挺強大的,對錯誤的屏蔽挺好的。