NSErrorFailingURLStringKey (kCFErrorDomainCFNetwork Fehler -1017) für spezifische Anforderungen
Schrieb ich eine helper-Klasse, mit der ich alle meine Anforderungen an einen server (Rails 4.1). Die meisten Anfragen werden innerhalb dieser Hilfsklasse, die gut funktionieren, aber eine spezifische Anforderung scheitern die ganze Zeit. Ich bin mit Alamofire für meine Anforderungen.
Hier noch der code von meinem helper-Klasse:
let responseHandler = { (request: NSURLRequest, response: NSHTTPURLResponse?, object: AnyObject?, error: NSError?) -> Void in
println("request: \(request) || response: \(response) || object: \(object) || error: \(error)")
}
//make custom request
let request = NSMutableURLRequest(URL: NSURL(string: fullPath)!)
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(["session_key": "ABC"], options: nil, error: nil)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = ["Accept": "application/json", "Content-Type": "application/json"]
Alamofire.request(request).response(responseHandler)
Hier ist die Ausgabe von der println
Zeile im obigen code:
request: <NSMutableURLRequest: 0x1702007e0> { URL: http:/wolverine.movie-assistor.staging.c66.me/user } || response: nil || object: Optional(<>) || error: Optional(Error Domain=NSURLErrorDomain Code=-1017 "The operation couldn’t be completed. (NSURLErrorDomain error -1017.)" UserInfo=0x1702ea780 {NSErrorFailingURLStringKey=http://wolverine.movie-assistor.staging.c66.me/user, NSErrorFailingURLKey=http://wolverine.movie-assistor.staging.c66.me/user, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-1, NSUnderlyingError=0x174240240 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1017.)"})
Ich habe versucht, das zurücksetzen Simulator (da ich irgendwo gelesen es könnte ein Simulator Problem) und versucht, auf meinem iPhone 6, aber das problem bleibt das gleiche. Der Versuch, die URL mit der CocoaRESTClient
fein gearbeitet, so dass ich bezweifle, dass es ein Problem auf der server-Seite verlässt, um die erwartete Antwort {"session_key" : "missing"}
).
Wer weiß, was das Problem ist?
EDIT #1:
Server-Seite, die auf Schienen läuft 4.1 sieht wie folgt aus (application_controller.rb
):
prepend_before_action :authenticate_session
def authenticate_session
if (session_key = params[:session_key]).nil?
forbidden(session_key: "missing")
elsif (session = Session.find_by(session_key: session_key)).nil?
forbidden(session_key: "unknown key")
elsif session.open != true
forbidden(session_key: "session closed")
end
end
def forbidden(object = {})
render json: make_hash(object), status: :forbidden
end
def make_hash(object)
if object.is_a?(ActiveRecord::Base)
return object.as_json
end
return object
end
EDIT #2:
In der Zwischenzeit habe ich versucht, verschiedene Anforderungen und es stellt sich heraus, dass der gleiche code auf der server-Seite funktioniert für alle Auftragsarten mit Ausnahme der "GET" - Anfragen (ich habe versucht, POST -, PUT-und DELETE-spezifisch). Also vielleicht den HTTP-body, unterscheiden müssen für GET-Anfragen?
InformationsquelleAutor Dschee | 2014-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ich gelesen hier senden Sie einen HTTP-Hauptteil mit einem GET-Anfragen gegen die HTTP/1.1-Spezifikation und wird daher nicht unterstützt on Rails. Ich wusste das nicht, also ich schicke meine Daten per URL-Parameter. Vielleicht hat jemand anderes auch kommt über dies und das helfen könnte.
InformationsquelleAutor Dschee
Habe ich nicht so den Ruf kippe upvote aber tnx sehr viel für die Lösung und Total geholfen 🙂 Hier ist was ich getan habe für swift :
InformationsquelleAutor ergunkocak