1

実行可能な翻訳APIURLを次の方法でテストしました。

http://translate.google.com/translate_a/t?client=t&text=%E5%BB%A3%E5%A0%B4&langpair=zh|zh-CN

そして、JSON形式の次のように正しい結果を返します。

{"sentences":[{"trans": "广场"、 "orig": "廣場"、 "translit": "Guǎngchǎng"}]、 "src": "zh-CN"}

ただし、XCodeでこの関数を使用しようとすると、この問題が発生しました...コードは次のとおりです。

NSData * data;

NSString *urlPath = [NSString stringWithFormat:@"/translate_a/t?client=t&text=%@&langpair=zh|zh-CN",qText];

NSURL *url = [[NSURL alloc] initWithScheme:@"http"
                                      host:@"translate.google.com"
                                      path:urlPath];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:url];
[request setHTTPMethod:@"GET"];

NSURLResponse *response;
NSError *error;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //Problem's here. It returns nil.
NSLog(result);

最初はエンコーディングの問題だと思ったので、他のエンコーディング(NSISOLatin1StringEncoding)も試しましたが、間違った答えが返ってきました:{"sentences":[{"trans": "ã"、 "orig":"ã"、 "translit": "Tu¨¯"}]、 "src": "zh-CN"}

誰かがこの問題を解決する方法を知っていますか?どうもありがとうございます!

4

1 に答える 1

0

エラーオブジェクトを確認してみましたか?エラーが発生した場合、この呼び出しはエラーオブジェクトを設定して続行します。通常のエラーのようにクラッシュ/スローすることはありません。

sendSynchronousRequest呼び出しの後で、次のようなことを試してください。

if (error != nil)
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

これにより、エラーが発生した場合の詳細がわかります。

于 2011-02-26T14:36:07.897 に答える