1

リモート サーバーに GET http 要求を送信する必要があるというシナリオがあります。私は NSURLConnection を使用し、HTTPScoop でリクエストをインターセプトしました。

URL の形式は次のようになります。

http://domain.com?key=username##somehash&url=someotherurl.com

私はこのようにやっています:

NSString *urlString = [[NSString alloc]init];
urlString = @"http://domain.com?key=username##somehash&url=someotherurl.com";
NSString *encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:encodedString]]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];

この場合、# 記号をエスケープしませんでした。httpscoop に表示されるリクエストは次のとおりです。

http://domain.com?key=username223somehash&url=someotherurl.com

シャープ記号を %23 にエスケープすると、httpscoop で次のようになります。

http://domain.com?key=username22523somehash&url=someotherurl.com

さまざまな組み合わせを試しましたが、常にシャープ記号に問題があります。これにはウォークアラウンドがありますか?ありがとう!

4

1 に答える 1

1

# を %23 ( source )に置き換えます。

編集 - おっと、メッセージの残りの部分が表示されませんでした。NSURL についてはよくわかりませんが、以前にも NSURL を使用して URL のパラメーターをエンコードするのが困難でした。私は最終的にASIHTTPRequestを使用して、すべてのエンコーディングの問題を処理しました。同じことをすることをお勧めします。

于 2012-06-01T19:22:54.317 に答える