2010-03-06 18 views

Respuesta

9

Depende de la información que desee en la cadena. ¿Desea que contenga todos los valores de las variables de instancia en el objeto? Si es así, vas a necesitar escribir tu propio método que haga eso. Tal vez la subclase NSURLRequest y anule description. También puede usar el reflejo para obtener todos los ivars privados e imprimir todo desde otra clase.

O simplemente use un depurador para inspeccionar los valores.

+0

TNX ... pero soy nuevo en el cacao ... en mi código: NSURLRequest * = newRequest solicitud; \t \t NSLog (@ "% @", newRequest); // Necesito poner "" en en la variable String. – Naeim

+13

'NSLog (@" ", [[newRequest URL] absoluteString]);' Consulte los documentos de la API para 'NSURLRequest': http://developer.apple.com/mac/library/documentation /cocoa/reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html –

+0

tnx Marc; \t \t NSString * naeim = [[newRequest URL] absoluteString]; este comando era verdadero;). – Naeim

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

Esto solo imprime la URL de NSURLRequest. Eso no es lo único que es importante en NSURLRequest. – rplankenhorn

+2

@rplankenhorn - Claramente. También es claramente lo que el OP fue después. –

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

En este ejemplo, urlRequest es un NSURLrequest (del ejemplo anterior más arriba). La segunda línea le permite imprimir el valor de un campo específico 'campo' que se ha agregado a NSURLRequest.

a partir de documentos de Apple

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

campo

El nombre del campo de cabecera cuyo valor va a ser devuelto. De acuerdo con el HTTP RFC, los nombres de los campos del encabezado HTTP son insensibles a mayúsculas y minúsculas.

Valor devuelto

El valor asociado con el campo campo de cabecera, o nil si no hay ningún campo de cabecera correspondiente.

+0

¿Por qué esto ayuda a responder la pregunta? ¿Y cómo se agrega esto a las otras respuestas? Parece una respuesta inútil y no ayuda a nadie -1 – Popeye

+0

@Popeye - muestra otro método método para obtener NSURLRequest como una cadena, exactamente como por la pregunta original y no una proporcionada por ninguna otra respuesta en la página. ¿Cómo en el mundo es así de inútil? –

+0

Bueno, aunque no es así. Como ninguno de nosotros sabe cuál es la variable 'urlRequest', podría ser cualquier cosa (Obvious one sería NSURLRequest pero un novato podría no saber eso) y ¿qué es' field'? Como 'HTTPHeaderFields' tiene bastantes campos, esto podría ser absolutamente cualquier cosa. Entonces esto en realidad no ayuda a resolver el problema. Debes hacer dos cosas para proporcionar todo el código y explicar tu código hasta que mi -1 permanezca. – Popeye

3

Si está utilizando rápida, se puede aplicar la siguiente 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() 
    } 
} 

O echa un vistazo a este GIST: https://gist.github.com/tomaskraina/d644af49e4968de85e34

Si se imprime, se muestra algo similar a lo siguiente:

<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

Gracias, realmente me ayudó a depurar una llamada objetiva a la que estaba migrando rápidamente. – greentor

1

en iOS 9/7 Xcode puede utilizar request.URLString en Swift (o en Obje ctivo-C, en realidad) tio