1

こんにちは、練習として、Web ページから iOS 上のアプリに送信される Web リクエストをコピーしようとしています。問題は、Web ページがテキスト lang=C++ を含む POST を送信すると、テキストが lang=C%2B%2B にエンコードされることです。NSMutableStringsetBody エンコーディング メッセージ :を含むデータを使用してリクエストを送信しています。NSUTF8StringEncoding以下のコードを参照してください。

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    ...(URL and so on)...
    NSString *contentType = [NSString stringWithFormat:@"application/x-www-form-urlencoded"];
    [request addValue:contentType forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:[data  dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

アプリと Web サービスによって送信されるリクエストのさまざまなスタイルの詳細については、wireshark のこれらのスクリーンショットを参照してください。下の画像で強調表示されているテキストが送信したいものです。上の画像は、現在のように実際にアプリによって送信されるものを示しています。

私が投稿しているように見えるもの

掲載すべきもの

4

2 に答える 2

1

上記の答えは私にとってはうまくいきませんでした。これに従ってインターフェースを拡張するカテゴリを作成する必要がありましNSStringた。上記の文字列の特定の部分でエンコーディングを使用します。data

私が使用したカテゴリの方法は次のとおりです。

#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
    return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                               (CFStringRef)self,
                                                               NULL,
                                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                                               CFStringConvertNSStringEncodingToEncoding(encoding));
}
于 2013-06-01T08:06:12.187 に答える