how can i convert NSURLRequest to NSString ?
Depends on the information you want in the string. Do you want to have it contain all the values of the instance variables in the object? If so, you're going to need to write your own method that does that. Perhaps subclass NSURLRequest
and override description
. You could also use reflection to get at all the private ivars and print everything out from another class.
Or just use a debugger to inspect the values.
NSLog(@"<NSURLRequest %@>", [[newRequest URL] absoluteString]);
Take a look a the API docs for NSURLRequest
: developer.apple.com/mac/library/documentation/cocoa/reference/… –
Collimator - (NSString*) urlRequestToString:(NSURLRequest*)urlRequest
{
NSString *requestPath = [[urlRequest URL] absoluteString];
return requestPath;
}
Depends on the information you want in the string. Do you want to have it contain all the values of the instance variables in the object? If so, you're going to need to write your own method that does that. Perhaps subclass NSURLRequest
and override description
. You could also use reflection to get at all the private ivars and print everything out from another class.
Or just use a debugger to inspect the values.
NSLog(@"<NSURLRequest %@>", [[newRequest URL] absoluteString]);
Take a look a the API docs for NSURLRequest
: developer.apple.com/mac/library/documentation/cocoa/reference/… –
Collimator If you're using swift, you can implement the following 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()
}
}
Or check out this gist: https://gist.github.com/tomaskraina/d644af49e4968de85e34
If printed out, it displays something similar to the following:
<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"}
}
}
NSURLRequest *urlRequest;
...
NSLog(@"%@", [urlRequest allHTTPHeaderFields]);
NSLog(@"%@",[urlRequest valueForHTTPHeaderField:field]);
In this example, urlRequest is an NSURLrequest (from the previous example above). The second line allows you to print the value of a specific field 'field' that has been added to the NSURLRequest.
From Apple docs
- (NSString *)valueForHTTPHeaderField:(NSString *)field Parameters
field
The name of the header field whose value is to be returned. In keeping with the HTTP RFC, HTTP header field names are case-insensitive.
Return Value
The value associated with the header field field, or nil if there is no corresponding header field.
urlRequest
is, it could be anything (Obvious one would be NSURLRequest but a newbie might not know that) and what is field
? Since HTTPHeaderFields
have quite a few fields in there this could actually be absolutely anything. So this doesn't actually help solve the problem. You need to do two things provide all the code and explain your code until then my -1 remains. –
Callable NSString *urlRequest
and when I do your code I would get unrecognized selector exception
which would be very bad. My -1 still remains as your answer remains very unclear still. –
Callable In iOS 9 / Xcode 7 you can use request.URLString
in Swift (or in Objective-C, actually)
© 2022 - 2024 — McMap. All rights reserved.