У меня есть простой фрагмент кода, который использовался ниже.Правильный способ отладки HTTP POST в Alamofire 4; HTTP POST не работает
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)")
}
Код предположительно запросит http-сообщение для простой веб-формы ниже.
<form action="/submit?textarea=1" method="post" enctype="multipart/form-data">
<p>Paste XML data here.</p>
<input id="id_reference" maxlength="50" name="reference" type="text" placeholder="Reference.." /><br>
<textarea id="id_xmldata" maxlength="5000" name="xmldata" rows="10" cols="80"></textarea>
<br>
<input type="submit"
name="textarea_post_form"
value="Send" />
</form>
Код должен содержать только две строки в качестве параметров формы на веб-сайте и вставки данных в базу данных. Он работал с Alamofire 3 и Swift 2, но не работает с AlamoFire 4 и Swift 3. Теперь я понятия не имею, почему он не работает, и не имеет понятия, где я должен начать отладку, так как не могу найти способ проверить, отправлены ли правильные данные или какая-либо ошибка на стороне сервера.
Есть ли способ исправить это или, возможно, проследить ошибку?
То, что я получил от оператора печати, кажется, не имеют какой-либо ошибки ...
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
Ответ имеет код состояния 200, он должен работать. Есть вероятность, что ошибка на стороне сервера? –
Попробуйте изменить 'validate()' to' validate (statusCode: 200 .. <600) 'Почему? Я не знаю, это сработало для меня. –
@JuanCurti Ответ должен быть 302. После отправки формы страница должна перенаправляться на другую страницу ... – Kann