Swift - POST 请求在服务器上识别为 GET
Swift - POST request recognises as GET on server
制作一个简单的 POST 请求,从 Swift 到 Apache/PHP。
Swift代码:
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember")!)
request.HTTPMethod = "POST"
let postString = "id=13&name=Jack"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
println("response = \(response)")
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString)")
}
task.resume()
PHP:
<?php
echo $_SERVER['REQUEST_METHOD']."\n";
var_dump($_POST);
?>
输出:
GET
array(0) {}
因此,它不充当服务器的 POST。我也尝试过 Alamofire 和 SwiftHTTP,效果相同。
请各位好心人帮忙。
检查你的url
对于 PHP 服务器,它应该是 .Php 文件
用作
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember.php")
!)
如果你发送参数给你的 php 服务器请求,比如
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember.php?id=13&name=Jack")!)
参考本教程,它包括 php 和 swift 代码以发送 post 请求 TUTORIAL: POST TO WEB SERVER API IN SWIFT USING NSURLCONNECTION
确实是 HTTP POST 请求。您的代码没有问题。使用 Charles(HTTP 调试代理)我看到您的请求被重定向 (301 HTTP)
您需要修复服务器代码/.httpaccess 配置
要求:
POST /createMember HTTP/1.1
Host dzr.lenyapugachev.ru
Accept-Encoding gzip, deflate
Content-Type application/x-www-form-urlencoded
Content-Length 15
Accept-Language en-us
Accept */*
Connection keep-alive
User-Agent 29530174/1 CFNetwork/711.2.23 Darwin/13.4.0
回复:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://dzr.lenyapugachev.ru/createMember/">here</a>.</p>
</body></html>
制作一个简单的 POST 请求,从 Swift 到 Apache/PHP。
Swift代码:
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember")!)
request.HTTPMethod = "POST"
let postString = "id=13&name=Jack"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
println("response = \(response)")
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString)")
}
task.resume()
PHP:
<?php
echo $_SERVER['REQUEST_METHOD']."\n";
var_dump($_POST);
?>
输出:
GET
array(0) {}
因此,它不充当服务器的 POST。我也尝试过 Alamofire 和 SwiftHTTP,效果相同。
请各位好心人帮忙。
检查你的url 对于 PHP 服务器,它应该是 .Php 文件
用作
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember.php")
!)
如果你发送参数给你的 php 服务器请求,比如
let request = NSMutableURLRequest(URL: NSURL(string: "http://dzr.lenyapugachev.ru/createMember.php?id=13&name=Jack")!)
参考本教程,它包括 php 和 swift 代码以发送 post 请求 TUTORIAL: POST TO WEB SERVER API IN SWIFT USING NSURLCONNECTION
确实是 HTTP POST 请求。您的代码没有问题。使用 Charles(HTTP 调试代理)我看到您的请求被重定向 (301 HTTP)
您需要修复服务器代码/.httpaccess 配置
要求:
POST /createMember HTTP/1.1
Host dzr.lenyapugachev.ru
Accept-Encoding gzip, deflate
Content-Type application/x-www-form-urlencoded
Content-Length 15
Accept-Language en-us
Accept */*
Connection keep-alive
User-Agent 29530174/1 CFNetwork/711.2.23 Darwin/13.4.0
回复:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://dzr.lenyapugachev.ru/createMember/">here</a>.</p>
</body></html>