2012-11-14 31 views
12

Tôi muốn hỏi xem có ai đã từng thử in ra các giá trị của yêu cầu NSMutableURLRequest * hay không;In NSMutableURLYêu cầu nội dung

Đây là kịch bản của tôi, tôi đã tạo XML của mình và thử gửi bằng plugin Firefox Poster, tôi đã chơi thành công với nội dung hợp lệ và không hợp lệ, nên thời gian chuyển sang iOS, không may với iOS. chính xác tho tôi luôn nhận được một phản hồi của yêu cầu xấu (400) mà tôi nghi ngờ là do một nội dung xml không đúng định dạng; Vì vậy, tôi đã suy nghĩ trước khi gửi yêu cầu tôi muốn kiểm tra xem nó có đúng dạng không.

Vì vậy, nó nắm tới "Làm thế nào tôi có thể in ra (NSLog, vv ..) nội dung của * yêu cầu"

Mẫu mã bên dưới:

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]]; 

đoạn mã này

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

kết quả để

<NSMutableURLRequest http://xxx.xxx.xxx.xxx/ps> 

trong khi làm một cái gì đó giống như

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

kết quả để

<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> 

Tôi biết bộ sưu tập này của các giá trị hex có thể được chuyển đổi; làm sao? (tho tìm thấy danh sách mong muốn như thế nào)

Vấn đề thực sự phù hợp với nội dung yêu cầu mà tôi mong muốn tìm hiểu cách xem nội dung thô và kiểm tra xem nó có thực sự đúng không.

Cảm ơn,

+6

Bạn có thể sử dụng 'NSLog (@ "Yêu cầu cơ thể% @", [[NSString alloc] initWithData: [yêu cầu HTTPBody] mã hóa: NSUTF8StringEncoding];' – Moxy

Trả lời

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

Nhưng nếu tôi muốn yêu cầu với thông số trong một chuỗi tức là URL cuối cùng, như .. "http://192.168.100.50:8022/LoginService.svc/GetloginDetailObj/"ALL TH TH PARAMETERS" làm cách nào tôi có thể nhận được trong nslog ...? – g212gs

+2

thủ thuật trên chỉ áp dụng cho các yêu cầu PUT/POST, yêu cầu GET có các tham số trong URI –

+2

Làm thế nào điều này có thể được thực hiện với 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]; 
    } 
Các vấn đề liên quan