2017-02-14 3 views
1

Ich habe ein einfaches Stück Code, der unten funktioniert.Eine geeignete Methode zum Debuggen von HTTP POST in Alamofire 4; HTTP POST funktioniert nicht

let params: Parameters! = ["xmldata": self.makeXML(), "reference": self.questionnaire!.jobRef!] 

Alamofire.request(url, method: .post, parameters: params, encoding: URLEncoding.default) 
       .validate() 
       .responseString { response in 
        print("Success: \(response.result)") 
        print("Response: \(response.response)") 
        print("Request: \(response.request)") 
        print("Error: \(response.error)") 
        // print("Response String: \(response.result.value)") 
       } 

Der Code soll HTTP-Post an ein einfaches Web-Formular unten anfordern.

Der Code sollte nur 2 Strings als Parameter in das Formular auf der Website eingeben und Daten in die Datenbank einfügen. Es hat früher mit Alamofire 3 und Swift 2 funktioniert, funktioniert aber nicht mehr mit AlamoFire 4 und Swift 3. Jetzt habe ich keine Ahnung, warum es nicht funktioniert, und habe keine Ahnung, wo ich anfangen sollte zu debuggen, da ich keinen Weg finde, um zu sehen, ob die richtigen Daten gesendet werden oder ob es einen Fehler auf der Serverseite gibt.

Gibt es eine Möglichkeit, dies zu beheben oder den Fehler zu verfolgen?

Was ich aus der Print-Anweisung bekam scheint keinen Fehler zu haben ...

Success: SUCCESS 
[Timeline]: Timeline: { "Request Start Time": 508807148.851, "Initial Response Time": 508807148.948, "Request Completed Time": 508807148.949, "Serialization Completed Time": 508807148.950, "Latency": 0.098 secs, "Request Duration": 0.099 secs, "Serialization Duration": 0.000 secs, "Total Duration": 0.099 secs } 
Response: Optional(<NSHTTPURLResponse: 0x600000225520> { URL: http://philips-survey.in.th/submit?textarea=1 } { status code: 200, headers { 
    Connection = "Keep-Alive"; 
    "Content-Encoding" = gzip; 
    "Content-Type" = "text/html; charset=utf-8"; 
    Date = "Tue, 14 Feb 2017 23:18:59 GMT"; 
    "Keep-Alive" = "timeout=5, max=100"; 
    Server = "Apache/2.4.10 (Debian)"; 
    "Transfer-Encoding" = Identity; 
    Vary = "Cookie,Accept-Encoding"; 
    "X-Frame-Options" = SAMEORIGIN; 
} }) 
Request: Optional(http://xxxx.com/submit?textarea=1) 
Error: nil 
+0

Die Antwort hat einen 200 Statuscode, es sollte funktionieren. Es besteht die Möglichkeit, dass der Fehler auf der Serverseite liegt. –

+0

Versuchen Sie 'validate()' zu 'validate (statusCode: 200 .. <600)' Warum? Ich weiß nicht, es hat für mich funktioniert. –

+0

@JuanCurti Antwort sollte 302 sein. Sobald das Formular gesendet wird, sollte die Seite auf eine andere Seite umleiten ... – Kann

Antwort

0

Haben Sie versucht, das Hochladen multipartFormData mit Alamofire mit? Etwas wie dieses: Network.CustomManager.upload(.POST, postEndpoint, headers: headers, multipartFormData: { multipartFormData in ...