16

NSURLRequest を NSString に変換するにはどうすればよいですか?

4

5 に答える 5

47
- (NSString*) urlRequestToString:(NSURLRequest*)urlRequest
{
  NSString *requestPath = [[urlRequest URL] absoluteString];
  return requestPath;
}
于 2011-08-04T08:02:33.347 に答える
9

文字列に必要な情報によって異なります。オブジェクト内のインスタンス変数のすべての値を含めますか? その場合は、それを行う独自のメソッドを作成する必要があります。おそらくサブクラス化NSURLRequestしてオーバーライドしますdescription。リフレクションを使用して、すべてのプライベート ivar を取得し、別のクラスからすべてを出力することもできます。

または、デバッガーを使用して値を調べます。

于 2010-03-06T22:20:27.380 に答える
3

Swift を使用している場合は、次を実装できます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()
    }
}

または、この要点を確認してください: https://gist.github.com/tomaskraina/d644af49e4968de85e34

印刷すると、次のようなものが表示されます。

<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"}
}
}
于 2015-04-21T13:00:59.583 に答える
1

request.URLStringiOS 9 / Xcode 7 では、Swift (または実際には Objective-C) で使用できます。

于 2016-03-02T00:28:28.697 に答える