2

私は ASIHTTP を使用しており、サイトに対して GET リクエストを実行しようとしています:

NSURL *url = [[NSURL URLWithString:@"/verifyuser.aspx?user=%@" relativeToURL:@"http://domain.com"],userName  retain];       
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setTemporaryFileDownloadPath:@"myfile2.txt"];
[request setDownloadDestinationPath:@"myfile.txt"];

[request startSynchronous];

しかし、[request startSynchronous] にブレークポイントを設定してデバッガーに入ると、リクエスト オブジェクトの url 値は userName 変数と等しくなります。userName 変数を文字列に挿入し、それを URL として使用しようとしているため、NSURL 宣言に何か問題があります。

ご協力いただきありがとうございます!

4

2 に答える 2

9

コードが正しくありません。文字列の書式設定が適切に行われていません。次のようになります。

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"/verifyuser.aspx?user=%@", userName] relativeToURL:@"http://domain.com"];

URL をリクエストに渡すだけなので、URL を保持する必要がないことに注意してください。

于 2010-01-15T23:35:07.627 に答える
0

この NSURL メソッドはフォーマット文字列を想定していません。Objective-C コンパイラは、メソッドが期待するものについてかなり弱い仮定を作成します。これが混乱の元になる可能性があります。

[NSString stringWithFormat:@"..."]代わりに使用してください。

現在、使用している構文は に解決さNSURL* url = [(NSURL* object), userName retain];れます。これは、ご想像のとおり、無効です。実際のところ、これがどのようにコンパイルされるのか、私は本当に疑問に思っています。

于 2010-01-15T23:35:46.487 に答える