Jak mogę przekonwertować NSURLRequest na NSString?NSURLRequest do NSString
Odpowiedz
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.
- (NSString*) urlRequestToString:(NSURLRequest*)urlRequest
{
NSString *requestPath = [[urlRequest URL] absoluteString];
return requestPath;
}
Powoduje to wydrukowanie adresu URL NSURLRequest. To nie jest jedyna rzecz, która jest ważna w NSURLRequest. – rplankenhorn
@rplankenhorn - Oczywiście. Jest także jasne, o co chodziło PO. –
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.
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
@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? –
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
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"}
}
}
Dzięki, naprawdę pomogło mi w debugowaniu obiektywnego wywołania c, które migałem do szybkiego. – greentor
w iOS 9/Xcode 7 można użyć request.URLString
w Swift (lub w obje ctive-C, faktycznie)
tnx gość ... ale jestem nowy w kakao ... w moim kodzie: NSURLRequest * newRequest = wniosek; \t NSLog (@ "% @", newRequest); // Potrzebuję umieścić " " w zmienna String. –
Naeim
'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 –
tnx Marc; \t \t NSString * naeim = [[adres URL nowego żądania] absoluteString]; to polecenie było prawdziwe;). – Naeim