2010-03-06 16 views

Antwort

9

Hängt von den gewünschten Informationen in der Zeichenfolge ab. Möchten Sie, dass alle Werte der Instanzvariablen im Objekt enthalten sind? Wenn ja, müssen Sie Ihre eigene Methode schreiben, die das tut. Vielleicht Unterklasse NSURLRequest und überschreiben description. Sie können auch Reflektion verwenden, um alle privaten Ivars zu erhalten und alles aus einer anderen Klasse auszudrucken.

Oder verwenden Sie einfach einen Debugger, um die Werte zu überprüfen.

+0

tnx kumpel ... aber ich bin neu in kakao ... in meinem code: NSURLRequest * newRequest = anforderung; \t \t NSLog (@ "% @", newRequest); // Ich brauche "" in " die String-Variable. – Naeim

+13

'NSLog (@" ", [[URL newRequest] absoluteString]);' Werfen Sie einen Blick auf die API-Dokumentation für 'NSURLRequest': http://developer.apple.com/mac/library/documentation /cocoa/reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html –

+0

tnx Marc; \t \t NSString * naem = [[URL newRequest] absoluteString]; Dieser Befehl war wahr;). – Naeim

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

Dies druckt nur die URL des NSURLRequest. Das ist nicht das einzige, was bei NSURLRequest wichtig ist. – rplankenhorn

+2

@rplankenhorn - Klar. Es ist auch klar, was der OP verfolgte. –

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

In diesem Beispiel ist ein urlRequest NSURLRequest (aus dem vorhergehenden Beispiel). In der zweiten Zeile können Sie den Wert eines bestimmten Feldfelds drucken, das zum NSURLRequest hinzugefügt wurde.

von Apple docs

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

Feld

Der Name des Header-Feld, dessen Wert zurückgegeben werden. In Übereinstimmung mit dem HTTP-RFC sind HTTP-Header-Feldnamen case-insensitive.

Rückgabewert

Der Wert mit dem Header-Feld Feld zugeordnet ist, oder null, wenn es kein entsprechendes Header-Feld ist.

+0

Was hilft die Frage? Und wie fügt das zu den anderen Antworten hinzu? Scheint wie eine sinnlose Antwort und hilft niemandem -1 – Popeye

+0

@Popeye - es zeigt eine andere Methode Methode, die NSURLRequest als eine Zeichenfolge, genau nach der ursprünglichen Frage und nicht eine von anderen Antworten auf der Seite zur Verfügung gestellt. Wie in der Welt ist das sinnlos? –

+0

Nun, es tut es nicht. Da keiner von uns weiß, was die Variable 'urlRequest' ist, könnte es alles sein (Offensichtlich wäre es NSURLRequest, aber ein Neuling weiß das vielleicht nicht) und was ist' field'? Da 'HTTPHeaderFields' ziemlich viele Felder enthalten, könnte dies eigentlich alles sein. Das hilft also nicht, das Problem zu lösen. Sie müssen zwei Dinge tun, um den gesamten Code und erklären Sie Ihren Code bis dann meine -1 bleibt. – Popeye

3

Wenn Sie swift verwenden, können Sie die folgende extension implementieren:

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() 
    } 
} 

Oder diesen Kern check out: https://gist.github.com/tomaskraina/d644af49e4968de85e34

Wenn ausgedruckt, zeigt es etwas Ähnliches wie die folgenden:

<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

Danke, hat mir wirklich geholfen, einen objektiven c-Aufruf zu debuggen, den ich zu swift migrierte. – greentor

1

in iOS 9/Xcode 7 können Sie request.URLString in Swift (oder in Zie verwenden ctive-C, eigentlich)