2010-03-06 28 views

Odpowiedz

9

W zależności od informacji, które chcesz w łańcuchu. Czy chcesz, aby zawierał on wszystkie wartości zmiennych instancji w obiekcie? Jeśli tak, będziesz musiał napisać własną metodę, która to robi. Być może podklasa NSURLRequest i zastąpić description. Możesz również użyć refleksji, aby uzyskać wszystkie prywatne znaki iv i wydrukować wszystko od innej klasy.

Lub po prostu użyj debuggera do sprawdzenia wartości.

+0

tnx gość ... ale jestem nowy w kakao ... w moim kodzie: NSURLRequest * newRequest = wniosek; \t NSLog (@ "% @", newRequest); // Potrzebuję umieścić "" w zmienna String. – Naeim

+13

'NSLog (@" ", [[newRequest URL] absoluteString]);' Zobacz dokumentację API dla 'NSURLRequest': http://developer.apple.com/mac/library/documentation /cocoa/reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html –

+0

tnx Marc; \t \t NSString * naeim = [[adres URL nowego żądania] absoluteString]; to polecenie było prawdziwe;). – Naeim

44
- (NSString*) urlRequestToString:(NSURLRequest*)urlRequest 
{ 
    NSString *requestPath = [[urlRequest URL] absoluteString]; 
    return requestPath; 
} 
+3

Powoduje to wydrukowanie adresu URL NSURLRequest. To nie jest jedyna rzecz, która jest ważna w NSURLRequest. – rplankenhorn

+2

@rplankenhorn - Oczywiście. Jest także jasne, o co chodziło PO. –

1
NSURLRequest *urlRequest; 
... 
NSLog(@"%@", [urlRequest allHTTPHeaderFields]); 
NSLog(@"%@",[urlRequest valueForHTTPHeaderField:field]); 

W tym przykładzie urlRequest jest NSURLrequest (w poprzednim przykładzie). Drugi wiersz umożliwia wydrukowanie wartości określonego pola "pole", które zostało dodane do NSURLRequest.

od Apple docs

- (NSString *)valueForHTTPHeaderField:(NSString *)field Parameters 

polowych

Nazwa pola nagłówka, którego wartość ma być zwrócony. Zgodnie z protokołem HTTP RFC, nazwy pól nagłówka HTTP są rozróżniane wielkości liter: .

Return Value

Wartość związana z polem pole nagłówka lub nil, jeśli istnieje ma odpowiedniego pola nagłówka.

+0

To, dlaczego ta pomoc pomaga odpowiedzieć na pytanie? I jak to wpływa na inne odpowiedzi? Wydaje się, że to bezcelowa odpowiedź i nikomu nie pomaga -1 – Popeye

+0

@Popeye - pokazuje inną metodę metody uzyskania NSURLRequest jako ciąg znaków, dokładnie tak, jak w oryginalnym pytaniu, a nie podaną przez inne odpowiedzi na stronie. Jak na świecie jest to bezcelowe? –

+0

Cóż, jednak nie. Ponieważ nikt z nas nie wie, jaka jest zmienna 'urlRequest', może to być cokolwiek (oczywiste, że byłby to NSURLRequest, ale nowicjusz może o tym nie wiedzieć) i czym jest' field'? Ponieważ 'HTTPHeaderFields' ma sporo pól, może to być absolutnie wszystko. Tak naprawdę to nie pomaga rozwiązać problemu. Musisz zrobić dwie rzeczy, podać cały kod i objaśnić swój kod, dopóki nie pozostanie moje -1. – Popeye

3

Jeśli używasz Swift, można zaimplementować następujące extension:

extension NSURLRequest: DebugPrintable { 
    public func extendedDescription() -> String { 

     var result = "<\(NSStringFromClass(self.dynamicType)): " + String(format: "%p", self) 
     result += "; HTTPMethod=" + (HTTPMethod ?? "nil") + "; URL=\(URL); timeoutInterval=" + String(format: "%.1fs", timeoutInterval) + "> {" 

     // Add header fields. 
     if let headers = allHTTPHeaderFields { 
      result += "\nallHTTPHeaderFields {" 
      for (key, value) in headers { 
       result += "\n\t\(key) : '\(value)'" 
      } 
      result += "\n}" 
     } 

     if let body = HTTPBody { 
      result += "\nHTTPBody {\n " + ((NSString(data: body, encoding: NSASCIIStringEncoding) ?? "") as String) + "}" 
     } 

     return result + "\n}" 
    } 

    public override var debugDescription: String { 
     return extendedDescription() 
    } 

    public override var description: String { 
     return extendedDescription() 
    } 
} 

Albo sprawdzić ten sens: https://gist.github.com/tomaskraina/d644af49e4968de85e34

Jeśli wydrukowane, wyświetla coś podobnego do poniższego:

<NSMutableURLRequest: 0x7fa91977e390; HTTPMethod=POST; URL=https://myapi.com/api/something; timeoutInterval=300.0s> { 
allHTTPHeaderFields { 
    Accept-Encoding : 'gzip' 
    Content-Type : 'application/json' 
    Accept : 'application/json' 
} 
HTTPBody { 
    {"key1":"value1"} 
} 
} 
+0

Dzięki, naprawdę pomogło mi w debugowaniu obiektywnego wywołania c, które migałem do szybkiego. – greentor

1

w iOS 9/Xcode 7 można użyć request.URLString w Swift (lub w obje ctive-C, faktycznie)