2012-11-14 13 views
12

誰かがNSMutableURLRequest *リクエストの値を出力しようとしたことがあるかどうか尋ねたいと思います。 NSMutableURLRequestを印刷する内容

私は自分のXMLを作成してFirefox Posterプラグインを使って送信しようとしましたが、有効なコンテンツと無効なコンテンツでうまくいきましたので、残念ながらiOSに移行する時間はありません正しくtho私は常に悪い要求(400)の応答を取得する私は疑わしいが、不正なXMLコンテンツの原因です。だから私は要求を送信する前に考えていたので、正しい形式であるかどうかを確認したい。

だから、それはつまるところ、 "(..など、のNSLog)どのように印刷することができます*リクエストの内容" は、以下の

サンプルコード:

NSURL *URL = [NSURL URLWithString:@"http://xxx.xxx.xxx.xxx/ps"]; 

    NSMutableURLRequest *request = [NSMutableURLRequest           requestWithURL:URL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60]; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [self.xmlLogin length]]; 

    //NSString *params = [[NSString alloc] initWithFormat:@"%@",[self xmlLogin]]; 
    [request addValue:@"application/xxx.ven.xml" forHTTPHeaderField:@"Content-Type"]; 
    [request addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:@"identity" forHTTPHeaderField:@"Accept-Encoding"]; 
    [request setValue:@"windows-1251" forHTTPHeaderField:@"Accept-Charset"]; 
    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad]; 
    [request setHTTPBody:[[self xmlLogin] dataUsingEncoding:NSUTF8StringEncoding]]; 

このコードスニペット

<NSMutableURLRequest http://xxx.xxx.xxx.xxx/ps> 
から
NSLog(@"Request %@\n",request); 

結果

<4c697665 3e383634 30303c2f 54696d65 546f4c69 76653e20 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 203c5365 7373696f 6e436f6f 6b69653e 436f6c69 62726961 494d5053 5f333734 36323032 39322e34 38373931 345f3737 33313c2f 53657373 696f6e43 6f6f6b69 653e2020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 3c2f4c6f 67696e2d 52657175 6573743e 3c2f5472 616e7361 6374696f 6e436f6e 74656e74 3e3c2f54 72616e73 61637469 6f6e3e20 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 20202020 203c2f53 65737369 6f6e3e3c 2f57562d 4353502d 4d657373 6167653e> 

NSLog(@"Request %@\n",[request HTTPBody]); 

結果のような何かをしながら、私は進値のこのコレクションを変換することができます知っています。どうやって?

本物の問題は、生の内容を見て、本当にその正しい形になっているかどうかを調べることを熱望している要求の内容に沸きます。

おかげで、

+6

あなたは 'のNSLog( "リクエストボディ%の@" @、使用することができます[[NSStringのはalloc] initWithData:[要求HTTPBody]エンコーディングを:NSUTF8StringEncoding];' – Moxy

答えて

24
NSLog(@"Request body %@", [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]); 
+0

しかし、私の場合1つの文字列、すなわち最終的なURL、 のようなパラメータでリクエストしたい "http://192.168.100.50:8022/LoginService.svc/GetloginDetailObj/"すべてTH Eパラメータ " どうすればnslogに入りますか? – g212gs

+2

上記のトリックはPUT/POSTリクエストにのみ適用可能です.GETリクエストはURIにパラメータを持っています –

+2

これはswでどのように行うことができますかift? –

6
- (NSString *)formatURLRequest:(NSURLRequest *)request 
    { 
     NSMutableString *message = [NSMutableString stringWithString:@"---REQUEST------------------\n"]; 
     [message appendFormat:@"URL: %@\n",[request.URL description] ]; 
     [message appendFormat:@"METHOD: %@\n",[request HTTPMethod]]; 
     for (NSString *header in [request allHTTPHeaderFields]) 
     { 
      [message appendFormat:@"%@: %@\n",header,[request valueForHTTPHeaderField:header]]; 
     } 
     [message appendFormat:@"BODY: %@\n",[[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]]; 
     [message appendString:@"----------------------------\n"]; 
     return [NSString stringWithFormat:@"%@",message]; 
    } 
- (NSString *)formatURLResponse:(NSHTTPURLResponse *)response withData:(NSData *)data 
    { 
     NSString *responsestr = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding]; 
     NSMutableString *message = [NSMutableString stringWithString:@"---RESPONSE------------------\n"]; 
     [message appendFormat:@"URL: %@\n",[response.URL description] ]; 
     [message appendFormat:@"MIMEType: %@\n",response.MIMEType]; 
     [message appendFormat:@"Status Code: %ld\n",(long)response.statusCode]; 
     for (NSString *header in [[response allHeaderFields] allKeys]) 
     { 
      [message appendFormat:@"%@: %@\n",header,[response allHeaderFields][header]]; 
     } 
     [message appendFormat:@"Response Data: %@\n",responsestr]; 
     [message appendString:@"----------------------------\n"]; 
     return [NSString stringWithFormat:@"%@",message]; 
    } 
関連する問題